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

时间:2017-09-05 19:09:49

标签: python-2.7

我在运行此测试程序时创建以下错误。

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

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

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

2 个答案:

答案 0 :(得分:1)

“当该文件已存在时无法创建文件”是一个令人困惑的通用Windows消息,因为它对于目录或常规文件是相同的。 (Windows不是非常有用的错误消息,你必须使用它)

来自shutil.copytree的在线帮助:

>>> help(shutil.copytree)
  

模块shutil中的函数copytree的帮助:

     

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

     

递归复制目录树。

     

目标目录必须不存在。

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

shutil.rmtree(dst)

在复制树之前删除目标目录(请注意,Windows使用权限很烦,而且具有只读属性的文件可以阻塞shutil.rmtree,我个人将代码复制到自定义版本中(你'我鼓励在在线帮助中这样做,以便在删除常规文件之前添加os.chmod(path,0o777)

答案 1 :(得分:1)

shutil.copytree(src,dst,symlinks = False,ignore = None,copy_function = copy2,ignore_dangling_symlinks = False,dirs_exist_ok = False)

dirs_exist_ok 指示是否在dst或任何丢失的父目录已经存在的情况下引发异常。

Python 3.8 现在支持dirs_exist_ok参数。这样就不会再出现该错误,并且在目标文件夹已经存在的情况下将其覆盖。

因此您需要使用:

shutil.copytree(src, dst, dirs_exist_ok=True)