遇到丢失的源文件时,强制shutil copy继续通过列表

时间:2016-06-29 08:52:22

标签: python shutil

我正在使用shutil根据用户提供的文件复制来自上游进程的输出。有时这些文件与上游进程不兼容,因此我将尝试移动的最终文件不会被创建。

我正在向shutil发送一个详细文件路径列表,我希望它继续移动列表中的所有项目,即使缺少一个或多个源文件。

source = ['/home/Desktop/folder/subfolder/file.ext', '/home/Desktop/folder/subfolder2/file2.ext', '/home/Desktop/folder/subfolder3/file3.ext']
dest = ['/home/Desktop/target/file.ext','/home/Desktop/target/file2.ext', '/home/Desktop/target/file3.ext']
for sou, des in zip(source, dest):
    shutil.copyfile(sou, des)

1 个答案:

答案 0 :(得分:0)

一种方法是简单地在调用周围添加异常处理,例如:

import shutil

source = ['/home/Desktop/folder/subfolder/file.ext', '/home/Desktop/folder/subfolder2/file2.ext', '/home/Desktop/folder/subfolder3/file3.ext']
dest = ['/home/Desktop/target/file.ext','/home/Desktop/target/file2.ext', '/home/Desktop/target/file3.ext']

for sou, des in zip(source, dest):
    try:
        shutil.copyfile(sou, des)
    except IOError as e:
        print e

这将显示以下缺失文件:

[Errno 2] No such file or directory: '/home/Desktop/folder/subfolder/file.ext'
[Errno 2] No such file or directory: '/home/Desktop/folder/subfolder2/file2.ext'
[Errno 2] No such file or directory: '/home/Desktop/folder/subfolder3/file3.ext'