【问题标题】:shutil.copytree --> [WinError 183]shutil.copytree --> [WinError 183]
【发布时间】:2018-09-15 06:41:44
【问题描述】:

我正在尝试将整个目录复制到新创建的目录。运行此程序时,它会正确执行所有操作,并且我可以看到实际上确实会从源文件夹中复制所有内容。但是,它仍然会返回 [WinError 183] - 尽管文件不存在,但无法创建已经存在的文件。不知道我做错了什么。

编辑:检查后在错误发生之前复制所有内容-每个文件,每个文件夹,所以不确定出了什么问题

import os
import shutil

#Directory Definitions
root_dir = "C:\\Users\\Gabe Weiner\\Desktop\\GMImport" #os.getcwd()
source_dir = root_dir + "\source"
target_dir = root_dir + "\\target"

#Target Duplicate
for root, dirs, files in os.walk(str(target_dir)):
   shutil.copytree(root, root_dir + "\\Backup")

【问题讨论】:

  • 复制前在备份目录上尝试os.path.exists,看看它是否存在
  • 不会改变任何东西,当shutil.copytree() 启动时目录不存在,但在其运行过程中的某个时刻(似乎在结束时?)它会遇到该错误
  • 您总是将当前目录root 复制到同一目录root_dir,因此在第一次执行循环后,您最终会遇到那个精确的错误,文档对此很清楚:docs.python.org/3/library/shutil.html#shutil.copytree
  • 如果我理解错了,请原谅我(刚刚开始学习 python),但循环似乎已经运行了不止一次,因为它似乎已经复制了所有内容?运行此之后,我的“备份”文件夹应包含所有 13 个文件夹 + 一个文件,但在此之后出现错误。如果我误解了某些东西,我该怎么做才能解决这个问题以仍然复制目录?

标签: python operating-system shutil


【解决方案1】:

虽然这不是shutil解决方案,但您也可以使用以下方法:

import os
from distutils.dir_util import copy_tree    <<<-----

def CopyFolder( in_fold, out_fold):
    copy_tree(in_fold, out_fold)     <<<<<<--------

#Directory Definitions
root_dir = r"C:\00_JOB\1_SVN\TullONE\4-Post_Production\t" #os.getcwd()
target_dir = root_dir + "\\target"

#Target Duplicate
for root, dirs, files in os.walk(target_dir):
    CopyFolder(root, root_dir + "\\Backup")      <<<<<<-----.

【讨论】:

  • 我在 linux 系统上遇到“Errno 13 Permission denied”错误,即使所有内容都被复制了。至少在我的情况下,使用 distutils 解决了这个问题。
猜你喜欢
  • 2020-04-12
  • 2018-02-14
  • 2022-07-06
  • 2021-09-29
  • 2022-12-16
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多