Python实现Excel文件复制(非剪切):从源目录克隆至目标目录
解决Excel文件复制(保留源文件)的问题
嘿,我得先纠正你一个关键的小误解——shutil.copy()完全不会移动源文件!它的核心作用就是复制文件,执行完后源文件会好好留在源目录里,你大概率是把它和shutil.move()搞混了,后者才是负责移动/剪切文件的操作。
下面给你几种靠谱的实现方法,都能满足“保留源文件,复制到目标目录”的需求:
方法1:基础文件复制(shutil.copy)
这是最直接的方式,适合单个Excel文件的复制:
import shutil import os # 替换成你的源文件路径和目标目录 source_excel = r"D:\source_folder\data.xlsx" target_folder = r"D:\target_folder" # 先确保目标目录存在,不存在就自动创建 os.makedirs(target_folder, exist_ok=True) # 执行复制,源文件会保留在原路径 shutil.copy(source_excel, target_folder)
方法2:保留文件元数据的复制(shutil.copy2)
如果你需要保留Excel文件的元数据(比如创建时间、修改时间、权限等),推荐用shutil.copy2,用法和copy几乎一致:
shutil.copy2(source_excel, target_folder)
方法3:批量复制目录下所有Excel文件
如果要复制源目录里所有的Excel文件(.xls和.xlsx格式),可以用循环遍历实现:
import shutil import os source_dir = r"D:\source_folder" target_dir = r"D:\target_folder" os.makedirs(target_dir, exist_ok=True) # 遍历源目录下的所有文件 for file_name in os.listdir(source_dir): # 筛选Excel格式的文件 if file_name.lower().endswith((".xls", ".xlsx")): source_path = os.path.join(source_dir, file_name) target_path = os.path.join(target_dir, file_name) shutil.copy2(source_path, target_path) print(f"已完成复制:{file_name}")
关键提醒
不管用上面哪种方法,源文件都会完整保留在源目录中,你可以在执行完代码后去源目录检查确认。如果之前你用shutil.copy时出现了源文件消失的情况,大概率是因为目标路径和源路径意外重复,或者误用到了shutil.move,可以排查下代码细节~
内容的提问来源于stack exchange,提问作者user4974662
相关产品推荐
相关产品推荐

