shutil.copy()是提高权限错误:
Traceback (most recent call last):
File "copy-test.py", line 3, in <module>
shutil.copy('src/images/ajax-loader-000000-e3e3e3.gif', 'bin/styles/blacktie/images')
File "/usr/lib/python2.7/shutil.py", line 118, in copy
copymode(src, dst)
File "/usr/lib/python2.7/shutil.py", line 91, in copymode
os.chmod(dst, mode)
OSError: [Errno 1] Operation not permitted: 'bin/styles/blacktie/images/ajax-loader-000000-e3e3e3.gif'
copy-test.py:
import shutil
shutil.copy('src/images/ajax-loader-000000-e3e3e3.gif', 'bin/styles/blacktie/images')
我运行命令行copy-test.py:
python copy-test.py
但运行cp
从同一个文件到同一目的地的命令行不会导致错误。 为什么?
发生故障的操作chmod
,而不是复制自身:
File "/usr/lib/python2.7/shutil.py", line 91, in copymode
os.chmod(dst, mode)
OSError: [Errno 1] Operation not permitted: 'bin/styles/blacktie/images/ajax-loader-000000-e3e3e3.gif'
这表明该文件已经存在,并已被其他用户所拥有。
shutil.copy
被指定为权限位复制。 如果你只想要的文件内容被复制,使用shutil.copyfile(src, dst)
或shutil.copyfile(src, os.path.join(dst, os.path.basename(src)))
如果dst
是目录。
与之配合的函数dst
是一个文件或目录,并且不复制的权限:
def copy(src, dst):
if os.path.isdir(dst):
dst = os.path.join(dst, os.path.basename(src))
shutil.copyfile(src, dst)
这是怎样的一个猜测,但我弹出的第一件事:
'bin/styles/blacktie/images'
你有没有尾随斜线。 虽然我不知道的实施shutil.copy()
我可以告诉你, cp
将采取不同取决于什么操作系统你运行它。 最有可能的,您的系统上, cp
是聪明,有注意到, images
是一个目录,并将文件复制到它。
然而,如果没有最后的斜线, shutil.copy()
可能将其解释为一个文件, 不检查,提高异常时,它无法创建一个文件名为images
。
总之,试试这个:
'bin/styles/blacktie/images/'
参数必须是:
shutil.copy('src/images/ajax-loader-000000-e3e3e3.gif', 'bin/styles/blacktie/images.ajax-loader-000000-e3e3e3.gif')