在Python中使用shutil.copytree()时遇到的问题

5
我试图在我的Python程序中使用shutil.copytree(libEntity,newDir)函数,但是出现了以下错误: FileExistsError: [WinError 183] 当该文件已经存在时无法创建文件:'C:\Users\newDir'
基本上它抱怨目标目录newDir已经存在了。
我认为这就是使用shutil.copytree的目的吗?我正在使用Windows 10上的Python 3.8.5。
我还尝试了distutils.dir_util.copy_tree(libEntity,newDir),但它不能正确运行。它会将源目录中的所有文件复制到新目录中,但不会保留目标文件夹中的目录结构,而是仅创建目标文件夹(newDir),并将所有源文件放在其中,而不创建目录树。这没有什么用。
有什么建议吗?
谢谢。

1
要做什么样的建议?copytree 的文档表示:“目标目录不能已经存在。”目前是什么情况?一个空目录吗? - alani
非常棒的教程,可以跟随 https://www.google.com/amp/s/www.geeksforgeeks.org/python-shutil-copytree-method/amp/ - user13824946
1个回答

7

有一个参数:dirs_exist_ok,默认值为False。将其与True一起使用。

shutil.copytree(libEntity,newDir,dirs_exist_ok=True)

8
当我添加 dir_exist_ok 部分时,出现了错误:TypeError: copy_tree() got an unexpected keyword argument 'dirs_exist_ok'。 - Diggee17
11
你很可能正在使用 Python 3.7 或更早版本。根据 shutil.pyi 文件,dirs_exist_ok 只有在 if sys.version_info >= (3, 8) 条件成立时才会定义,也就是说需要使用 Python 3.8 或更新的版本。 - Rocky K
虽然可能性很大,但并非总是如此。在遇到此错误时,我还通过 import sys; sys.version 检查了 Python 版本,并确认为 3.8+。 - MinneapolisCoder9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接