22

我有一些使用 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'

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

4

3 回答 3

31

从以下文档shutil.copyfile

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

所以我猜你需要使用shutil.copy或添加文件名des

des = os.path.join(des, x[1])
于 2012-06-30T22:22:05.463 回答
4

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

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

于 2015-02-17T14:47:55.630 回答
4

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

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

而不是 777,后来我使用了八进制值 '0o777',后来使用shutil.copyfile(target_file,dest_file)它并且它起作用了!

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

于 2019-04-02T07:14:09.517 回答