shutil.copytree的问题

时间:2012-05-10 18:02:42

标签: python shutil copytree

我想从我的计算机上的本地服务器复制文件夹,使用函数shutil.copytree,我使用macOS,但今天我有问题,python总是向我显示相同的消息,“[错误1]操作不允许”,但昨天我的脚本工作没有相同的文件夹问题... 有人能告诉我什么是问题,可能发生了什么?

3 个答案:

答案 0 :(得分:2)

“操作不允许”错误的原因可能是,当源和目标位于不同的文件系统上时,shutil.copytree(以及shutil.copy和shutil.copy2)有一些奇怪的行为。

E.g。尝试使用python2.7在ubuntu上将文件从ext3复制到ntfs卷时,我遇到了shutil.copy的问题。我刚刚使用了shutil.copyfile

谈到shutil.copytree:看看this回答,我喜欢它 - 只需编写自己的copytree。

答案 1 :(得分:1)

我试图复制现有目录是我的猜测。

来自文档

  

shutil.copytree = copytree(src,dst,symlinks = False,ignore = None)       使用copy2()递归复制目录树。

The destination directory must not already exist.

请注意最后一行。

我没有要验证的MAC OS机器,但我猜测目标目录存在。以下是我的Linux机器上发生的类似错误

$ mkdir test1
$ touch test1/a
$ touch test1/b

然后在交互式翻译中

>>> from shutil import copytree
>>> copytree("test1","test2")
>>> copytree("test1","test2")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/shutil.py", line 175, in copytree
    os.makedirs(dst)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 17] File exists: 'test2'
  
    
      

    
  

答案 2 :(得分:1)

错误代码告诉您,您无权读取源或写入目标。您的文件和文件夹的权限设置是否更改?