2017-09-05 567 views
2

我在运行此测试程序时创建以下错误。FileExistsError:[WinError 183]当该文件已存在时无法创建文件:

import shutil  
src=r"G:\aaa"  
dst=r"F:\zzz"  
shutil.copytree(src,dst, symlinks=False, ignore=None)  

FileExistsError:[WinError 183]当文件已存在无法创建文件:

但F的文件夹:\ zzz为空!

+0

需要更多信息。什么是测试程序的代码?从输出Fromm看来,在尝试创建一个已经存在的文件时,对某个File IO API的调用会引发此错误。需要查看代码以获取更多信息。 – Soumya

+0

@让FrançoisFabre字符串前的'r'借此 – Milk

+0

@Milk的护理:真实。我的眼睛迟迟不能工作得很好:)对OP很好。如果我有一个美元,当有人为此而... –

回答

1

“当文件已存在无法创建文件”是被混淆,因为它是目录或普通文件一样通用的Windows消息。 (Windows未对非常有帮助的错误消息知,你必须凑合用那个)从shutil.copytree在线帮助

>>> help(shutil.copytree) 

Help on function copytree in module shutil:

copytree(src, dst, symlinks=False, ignore=None, copy_function=, ignore_dangling_symlinks=False)

Recursively copy a directory tree.

The destination directory must not already exist.

所以第一次,它可能有效,但其他有时候你需要执行

shutil.rmtree(dst) 

删除目标目录复制树之前(请注意,Windows是烦人的权限和具有只读属性的文件可以扼住shutil.rmtree,我个人将代码复制到自定义版本中(在联机帮助中鼓励您这样做)在删除常规文件之前添加os.chmod(path,0o777)

+0

谢谢。它是正确的。我认为它会在文件夹内创建。但它也创建了文件夹本身 –

相关问题