提问者:小点点

使用shutil。copyfile我收到一个Python IOError:[Errno 13]权限被拒绝:


我有一些使用shutil的python代码。复制文件:

import os
import shutil

src='C:\Documents and Settings\user\Desktop\FilesPy'
des='C:\Documents and Settings\user\Desktop\\tryPy\Output'

x=os.listdir(src)
a=os.path.join(src,x[1])

shutil.copyfile(a,des)
print a

这给了我一个错误:

IOError: [Errno 13] Permission denied: 'C:\\Documents and Settings\\user\\Desktop\\tryPy\\Output'

为什么我没有权限复制文件?


共3个答案

匿名用户

来自shutil的文档。复制文件

将名为src的文件的内容(无元数据)复制到名为dst的文件中。dst必须是完整的目标文件名;查看shutil.copy()以获取接受目标目录路径的副本。如果src和dst是相同的文件,则会引发错误。目标位置必须是可写的;否则,将引发IOError异常。如果dst已经存在,它将被替换。特殊的文件,如字符或块设备和管道不能复制与此功能。src和dst是路径名称作为字符串。

所以我想你需要使用shutil。复制或将文件名添加到des

des = os.path.join(des, x[1])

匿名用户

如果可以的话,我建议你宁可使用shutil.copyfile也不要shutil.copy。

有了shutil.copyfile,就得考虑写入权限等元数据。

匿名用户

我尝试了这里的所有方法,但是我的代码的问题是关于目标文件夹的权限。我创建了自己的函数来创建dir,

def mkdirs(newdir,mode=777):
    try:
        os.makedirs(newdir, mode)
    except OSError as err:
        return err

后来我用“0o777”表示八进制值,而不是777,后来使用了shutil。copyfile(目标文件、目标文件)成功了!

希望这对那些先创建目录,然后在其中复制文件的人有所帮助。