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/

10-09 17:39