Python实现多位置文件夹文件合并至单文件夹的问题求助
多源文件夹文件批量移动到目标文件夹的修复方案
你的代码存在两个错误导致运行失败:
- os.listdir() 参数错误:这个函数仅支持传入单个文件夹路径,你同时传了两个源路径,触发
TypeError。 - shutil.move() 用法错误:该函数只需要两个参数——待移动文件的完整路径、目标位置的完整路径,你传入三个参数不符合要求。
修正后的代码
import os import shutil # 将所有源文件夹存入列表,实现批量遍历 sources = [ "C:\\Users\\user\\OneDrive\\Desktop\\1\\", "C:\\Users\\user\\OneDrive\\Desktop\\2\\" ] destination = "C:\\Users\\user\\OneDrive\\Desktop\\Destination\\" # 确保目标文件夹存在,不存在则自动创建 os.makedirs(destination, exist_ok=True) # 遍历每个源文件夹 for source in sources: # 获取当前源文件夹内的所有项 for filename in os.listdir(source): # 拼接完整的源文件路径(比直接用+更安全) source_file_path = os.path.join(source, filename) # 拼接完整的目标文件路径 dest_file_path = os.path.join(destination, filename) # 仅移动文件(如需移动文件夹可删除此判断) if os.path.isfile(source_file_path): shutil.move(source_file_path, dest_file_path) print("文件已转移完成")
关键优化点
- 使用
os.path.join()拼接路径:避免手动拼接时因路径末尾有无斜杠导致的路径错误,兼容性更强。 - 自动创建目标文件夹:通过
os.makedirs(..., exist_ok=True)确保目标目录存在,防止移动时因目录不存在报错。 - 可选的文件/文件夹过滤:通过
os.path.isfile()只移动文件,若需要同时移动子文件夹,删除该判断即可。
内容的提问来源于stack exchange,提问作者Wes2525
相关产品推荐
相关产品推荐

