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'
复制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)
关于python - 为什么在cp不存在的情况下,shutil.copy()会引发权限异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11835833/