如何复制CSV文件时避免被自动转换为Excel格式?
问题原因
shutil.copy方法本身不会修改任何文件的内容、扩展名,你观察到的「csv变成xlsx”本质是Windows系统的显示逻辑导致的错觉:
- CSV文件默认关联Excel程序打开,所以文件图标会显示为Excel图标,容易被误认为是xlsx格式
- Windows系统默认开启「隐藏已知文件类型的扩展名」,你看到的后缀显示可能存在误差,并非文件真实后缀。
验证方法
- 右键目标路径下的文件,选择「属性」,查看详情页的文件类型和完整文件名,确认实际后缀是否仍然为
.csv - 用记事本打开该文件,如果内容是纯文本的逗号分隔格式,就说明文件本身还是CSV格式,没有被转换。
解决步骤
- 修正系统显示设置:打开Windows资源管理器的顶部「查看」选项卡,勾选「文件扩展名」选项,即可看到文件真实的后缀名,避免显示混淆
- 若要从代码层面彻底规避后缀变更风险,可以明确指定目标文件的完整名称,修改代码如下:
import os import shutil source_file = "newfile.csv" target_dir = "C:\\User\\Pro\\" if os.path.exists(source_file): # 拼接得到完整目标路径,强制保留原文件名和后缀 target_file = os.path.join(target_dir, os.path.basename(source_file)) shutil.copy(source_file, target_file)
内容的提问来源于stack exchange,提问作者Vance Pyton
相关产品推荐
相关产品推荐

