错误说\\\\ Ref \\ builds / out存在,但它不存在

时间:2013-01-05 20:43:20

标签: python shutil

我正在尝试使用以下代码复制源代码树并遇到错误,我不知道为什么我会得到这个?错误说\\ Ref \ builds / out存在但它不存在,“out”是目录是脚本尝试复制到目标的源位置,如果shutil不适合这种类型的副本,还有其他任何方法可以复制吗?

//local/mnt/workspace/04.01_HY11/out
\\Ref\builds/out
copying
Traceback (most recent call last):
  File "test.py", line 21, in <module>
    main()
  File "test.py", line 18, in main
    copytree(src,dst)
  File "test.py", line 11, in copytree
    shutil.copytree(s, d)
  File "/pkg/qct/software/python/2.5.2/.amd64_linux26/lib/python2.5/shutil.py", line 110, in copytree
    os.makedirs(dst)
  File "/pkg/qct/software/python/2.5.2/.amd64_linux26/lib/python2.5/os.py", line 171, in makedirs
    mkdir(name, mode)
OSError: [Errno 17] File exists: '\\\\Ref\\builds/out'

Python代码

import os,shutil

def copytree(src, dst, symlinks=False, ignore=None):
    for item in os.listdir(src):
        s = os.path.join(src, item)
        print s
        d = os.path.join(dst, item)
        print d
        if os.path.isdir(s):
            print "copying"
            shutil.copytree(s, d, symlinks, ignore)
        else:
            shutil.copy2(s, d)
def main ():
    src="//local/mnt/workspace/04.01_HY11"
    dst="\\\\Ref\\builds"
    copytree(src,dst)

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:1)

documentation for shutil.copytree清楚地说:

  

目标目录(由dst命名)必须不存在;它将被创建以及缺少父目录。

\\ref\builds\out已经存在 - 您可以从异常的堆栈跟踪中看到它正在尝试mkdir该路径,但是失败时出现错误,指示该路径已经存在(这可能发生在path作为常规文件或目录存在。)

您需要通过选择其他路径或首先删除该位置的现有树来复制到尚不存在的路径。后者可以使用shutil.rmtree完成。