如何结合pandas DataFrame使用shutil自动复制文件,替代手动执行cp命令
可行实现方案
- 先确认你的pandas DataFrame中已经明确对应两列:源图片文件名/路径列、目标文件完整路径列,以下示例默认两列名分别为
source_file、target_path,你可以替换成自己实际的列名。 - 导入所需依赖库,在脚本头部加入以下代码:
import os import shutil
- 提前创建目标根目录(如果目标路径涉及多层子目录,可以跳过这步,在遍历的时候单独创建):
# 替换成你实际的目标文件夹根路径 os.makedirs("destinationfolder", exist_ok=True)
- 遍历DataFrame逐行执行复制操作,和原生cp命令效果完全一致:
for _, row in df.iterrows(): # 替换成你实际的列名 source_path = row["source_file"] target_path = row["target_path"] # 可选:如果目标路径存在多层动态子目录,加上这行自动创建 # os.makedirs(os.path.dirname(target_path), exist_ok=True) # 判断源文件存在再执行复制,避免报错中断流程 if os.path.isfile(source_path): # copy2会保留文件元数据,和系统cp命令默认行为一致 shutil.copy2(source_path, target_path) else: print(f"跳过不存在的源文件:{source_path}")
补充说明
- 如果你的源图片统一存在指定文件夹下,没有在DataFrame的源文件列写完整路径,可以在赋值
source_path的时候做路径拼接:source_path = os.path.join("你的源图片文件夹路径", row["source_file"]) - 不需要保留文件修改时间、权限等元数据的话,把
shutil.copy2换成shutil.copy即可。
内容的提问来源于stack exchange,提问作者HB81
相关产品推荐
相关产品推荐

