将文件复制到现有目录会导致IOError [错误21]是一个目录

时间:2015-06-10 19:38:15

标签: python

我收到此错误:

IOError [Error 21] is a directory

当我尝试将文件复制到现有目录时。我是这样做的:

shutil.copyfile(src, dst)

其中src是文件,dst是现有目录。我做错了什么?

3 个答案:

答案 0 :(得分:8)

你使用了错误的功能。你可能想要“复制”:

https://docs.python.org/2/library/shutil.html

答案 1 :(得分:3)

你已经在问题中回答了自己。

dst应该是复制文件的路径。因此,如果您要将文件复制到/var/lib/my/并且文件名为f1,则dst应为/var/lib/my/f1.txt

尝试按here

的建议john-estess使用shutil.copy
shutil.copy(src, dst)

或尝试使用以下代码段修复此问题

shutil.copyfile(src, '%s/%s' % (dst, src.split('/')[-1]))

假设src是您要复制的文件的路径,例如/var/log/apache/access.logdst是要复制文件的目录的路径,例如{{ 1}}然后新目的地为/var/lib/my

答案 2 :(得分:0)

我要疯了,直到我弄清楚了。请参阅代码段,以查看源是文件的路径,目标是文件的路径(直到运行此功能,该路径才存在)。

for file in orig_files:
    shutil.copyfile(SOURCE_PATH + file_name, DEST_PATH + file_name)