我在Windows上有以下简单的Python脚本:
import os.path
import shutil
src = os.path.join("..", "_build")
dst = "_build"
print("Copying {} to {}".format(src, dst))
if not os.path.exists(dst):
shutil.copytree(src, dst)
print("Copied {} to {}".format(src, dst))
else:
print("{} already exists".format(dst))
当我跑步时,我收到以下错误:
>python copytreetest.py
Copying ..\_build to _build
Traceback (most recent call last):
File "copytreetest.py", line 9, in <module>
shutil.copytree(src, dst)
File "C:\Program Files\Python36\lib\shutil.py", line 315, in copytree
os.makedirs(dst)
File "C:\Program Files\Python36\lib\os.py", line 220, in makedirs
mkdir(name, mode)
FileExistsError: [WinError 183] Cannot create a file when that file already exists: '_build'
这是一个截图,显示目的地&#34; _build&#34;事实上确实不存在:
如果我从&#34; _build&#34;更改目的地到&#34; _build2&#34;然后我没有收到错误:
>python copytreetest.py
Copying ..\_build to _build2
Copied ..\_build to _build2
这到底是怎么回事?为什么Windows在一个实例中(在存在调用期间)表示目标不存在,而在另一个实例中(在mkdir调用期间)表示目标存在。我可以在这里遇到哪个Windows错误?我正在运行Windows Server 2016版本1607。
编辑:我发现错误是因为我在_build目录中打开了一个终端。我想某种程度上存在冲突,你可以删除终端已打开的目录,但不能创建另一个具有相同名称的目录(即使它似乎不存在)。这显然令人困惑,所以我会在这里留下这个问题,万一有人遇到同样的问题。