Python批量复制大文件遭遇Permission Error的排查与解决
问题说明
使用Python复制318MB的X光胸片数据集过程中,随机触发Permission Error权限错误。
相关环境信息
- 数据集:胸部X光肺炎数据集
- Python版本:3.8.13
- IDE:VSCode
代码及报错信息
复制代码
for jpgfile in glob.iglob(os.path.join(imageData, "*.jpeg")): shutil.copy(jpgfile, dst_dir)
报错详情
C:/Users/user1/Desktop/imageData Traceback (most recent call last):
File "c:\Users\user1\Desktop\copyImageJPEG.py", line 35, in
shutil.copy(jpgfile, dst_dir) File "C:\Users\user1\AppData\Local\Programs\Python\Python38\lib\shutil.py",
line 418, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks) File "C:\Users\user1\AppData\Local\Programs\Python\Python38\lib\shutil.py",
line 264, in copyfile
with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst: PermissionError: [Errno 13] Permission denied:
'C:/Users/user1/Desktop/copyFolder\person110_virus_207.jpeg'
已尝试的无效解决方法
- 通过
chmod命令修改文件权限 - 尝试使用
shutil.copy、shutil.copyfile、shutil.copy2函数 - 为源路径和目标路径填写完整绝对路径
- 对源路径和目标路径进行编码处理
- 以管理员身份运行Python代码
- 使用r前缀处理路径字符串(如
r"C:\path\to\file")
最终有效解决方案
关闭目标复制文件夹,避免在代码运行期间操作该文件夹。
原因:Windows系统会锁定编辑器中打开的文件,当代码尝试覆盖被锁定的文件时就会触发权限错误;如果在代码运行过程中查看复制的文件,会随机触发该问题。
后续会更新更多相关解决方案或问题根源分析。
内容的提问来源于stack exchange,提问作者OJazz

