2

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

4

3 回答 3

2

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

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

谈到shutil.copytree:看看这个答案,我喜欢它 - 只需编写你自己的copytree。

于 2013-02-07T08:08:09.327 回答
1

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

于 2012-05-10T18:32:55.593 回答
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'

于 2012-05-10T18:29:49.743 回答