shutil.copytree(r'C:/Users/admin/Desktop/test/文件夹1','C:/Users/admin/Desktop/test/文件夹1/文件夹2/文件夹3')
当文件夹1里面不存在文件夹2时代码执行正常。但是当文件夹1里面存在文件夹2时,会出现以下报错:
Traceback (most recent call last):
File "C:/Users/admin/Desktop/test/test.py", line 3, in <module>
shutil.copytree(r'C:/Users/admin/Desktop/test/文件夹1','C:/Users/admin/Desktop/test/文件夹1/文件夹2/文件夹3')
File "D:\Python\Python37\lib\shutil.py", line 359, in copytree
raise Error(errors)
shutil.Error: [('C:/Users/admin/Desktop/test/文件夹1\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3', 'C:/Users/admin/Desktop/test/文件夹1/文件夹2/文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3\\文件夹2\\文件夹3', "[WinError 206] 文件名或扩展名太长。: 'C:/Users/admin/Desktop/test/文件夹1/文件夹2/文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3\\\\文件夹2\\\\文件夹3'")]
看着像是无限循环了。
copytree是递归拷贝,应该是动态拷贝,文件夹3本来就属于文件夹1,你现在把文件夹1拷到3里去,相当于文件夹1中的内容不断的在增多,但你还要把这个增多的内容往3里拷。
我想可以借助中间临时目录再拷到目标目录
# 目标文件夹最后加上/就行了
shutil.copytree(r'C:/Users/admin/Desktop/test/文件夹1','C:/Users/admin/Desktop/test/文件夹1/文件夹2/文件夹3/')