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