Принудительно продолжить копирование через список при обнаружении отсутствующего исходного файла
Я использую 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 ответ
Решение
Одним из подходов было бы просто добавить обработку исключений вокруг вызова, например:
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'