我在运行此测试程序时会创建以下错误。
import shutil
src=r"G:\aaa"
dst=r"F:\zzz"
shutil.copytree(src,dst, symlinks=False, ignore=None)
Run Code Online (Sandbox Code Playgroud)
FileExistsError: [WinError 183] 当该文件已存在时无法创建文件:
但是 F:\zzz 的文件夹是空的!!!
小智 6
Shutil.copytree(src、dst、符号链接=False、忽略=无、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)
Run Code Online (Sandbox Code Playgroud)
“当文件已存在时无法创建该文件”是一条通用的 Windows 消息,该消息令人困惑,因为它对于目录或常规文件来说是相同的。(Windows 并不以非常有用的错误消息而闻名,您必须将其凑合)
来自在线帮助shutil.copytree:
>>> help(shutil.copytree)
Run Code Online (Sandbox Code Playgroud)
模块 Shutil 中函数 copytree 的帮助:
copytree(src、dst、符号链接=False、忽略=无、copy_function=、ignore_dangling_symlinks=False)
递归复制目录树。
目标目录不得已存在。
所以第一次它可能有效,但其他时候你需要执行
shutil.rmtree(dst)
Run Code Online (Sandbox Code Playgroud)
在复制树之前删除目标目录(请注意,Windows 的权限很烦人,并且具有只读属性的文件可能会阻塞shutil.rmtree,我个人将代码复制到自定义版本中(鼓励您在在线中这样做)帮助)os.chmod(path,0o777)在删除常规文件之前添加一个。
| 归档时间: |
|
| 查看次数: |
9631 次 |
| 最近记录: |