我收到此错误:
IOError [Error 21] is a directory
当我尝试将文件复制到现有目录时。我是这样做的:
shutil.copyfile(src, dst)
其中src
是文件,dst
是现有目录。我做错了什么?
答案 0 :(得分:8)
你使用了错误的功能。你可能想要“复制”:
答案 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.log
,dst
是要复制文件的目录的路径,例如{{ 1}}然后新目的地为/var/lib/my
。
答案 2 :(得分:0)
我要疯了,直到我弄清楚了。请参阅代码段,以查看源是文件的路径,目标是文件的路径(直到运行此功能,该路径才存在)。
for file in orig_files:
shutil.copyfile(SOURCE_PATH + file_name, DEST_PATH + file_name)