Python 实现 一个基于 TXT 文本列表的批量文件移动工具

📅 2026/7/5 14:21:53
Python 实现 一个基于 TXT 文本列表的批量文件移动工具
Python 实现 一个基于 TXT 文本列表的批量文件移动工具flyfish读取一个 TXT 文件里写好的所有源文件路径然后把这些文件统一剪切并粘贴到一个指定的目标文件夹中。批量移动文件利用 shutil.move 将分散在各个路径下的文件统一移动到指定的 TARGET_FOLDER 中。按清单执行不扫描整个硬盘而是严格按照 TXT_FILE_PATH 中记录的路径一行一行地去执行Linux下使用的代码importosimportshutil# 【只需改这里】 # txt 文件路径里面每行是一个文件绝对路径TXT_FILE_PATHr/media/user/xxx/normal.txt# 要剪切到的目标文件夹TARGET_FOLDERr/media/user/xxx/target_normal# 是否覆盖已存在的文件True覆盖False跳过OVERWRITEFalse# defmove_files_from_txt(txt_path,target_dir,overwriteFalse):# 1. 创建目标文件夹不存在则创建os.makedirs(target_dir,exist_okTrue)print(f目标文件夹已准备{target_dir})# 2. 读取 txt 所有行withopen(txt_path,r,encodingutf-8)asf:lines[line.strip()forlineinf.readlines()ifline.strip()]totallen(lines)success0fail0skip0print(f\n开始剪切共{total}个文件...\n)# 3. 遍历剪切fori,src_pathinenumerate(lines,1):filenameos.path.basename(src_path)dst_pathos.path.join(target_dir,filename)# 检查源文件是否存在ifnotos.path.exists(src_path):print(f[{i}/{total}] 不存在{src_path})fail1continue# 目标已存在ifos.path.exists(dst_path):ifoverwrite:print(f[{i}/{total}] 覆盖{filename})else:print(f[{i}/{total}] 已存在跳过{filename})skip1continue# 执行剪切try:shutil.move(src_path,dst_path)print(f[{i}/{total}] 剪切成功{filename})success1exceptExceptionase:print(f[{i}/{total}] 剪切失败{filename}| 错误{str(e)})fail1# 4. 统计print(\n*50)print(f剪切完成)print(f总计{total})print(f成功{success})print(f跳过{skip})print(f失败{fail})print(*50)if__name____main__:move_files_from_txt(TXT_FILE_PATH,TARGET_FOLDER,OVERWRITE)如果要在 Windows 下完美实现覆盖可以在 shutil.move 前加一句判断ifoverwriteandos.path.exists(dst_path):os.remove(dst_path)# 先删除已存在的旧文件再执行 move