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

时间:2012-06-30 22:10:52

标签: python permission-denied shutil

我有一些使用shutil.copyfile的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 个答案:

答案 0 :(得分:18)

来自shutil.copyfile的{​​{3}}:

  

将名为src的文件的内容(无元数据)复制到名为的文件中   DST。 dst必须是完整的目标文件名;看看shutil.copy()   对于接受目标目录路径的副本。如果src和dst是   相同的文件,引发错误。目的地位置必须是   可写;否则,将引发IOError异常。如果是dst   已经存在,它将被替换。特殊文件,如角色   或使用此功能无法复制块设备和管道。 SRC   和dst是以字符串形式给出的路径名。

所以我猜您需要使用documentation或将文件名添加到des

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

答案 1 :(得分:2)

如果可以的话,我建议您使用shutil.copyfile而不是shutil.copy。

使用shutil.copyfile,您必须考虑写入权限等元数据。

答案 2 :(得分:0)

我在这里尝试了所有方法,但是我的代码存在问题,涉及到目标文件夹的权限。我创建了自己的用于创建目录的函数,

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

后来我使用八进制值'0o777'代替了777,后来又使用shutil.copyfile(target_file,dest_file)了!

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