当前位置: 首页 > 知识库问答 >
问题:

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

施自珍
2023-03-14

我正在使用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个答案

章昆琦
2023-03-14

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

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'
 类似资料:
  • 新版Robocopy(在Windows server 2012中)输出显示,它会重复(每次运行)复制“修改”类型的文件。 源文件和目标文件没有明显变化。 我们能知道这些“修改过的”文件是什么意思,以及如何避免一次又一次的复制吗? 我需要将源目录镜像到具有多个同步的所有文件属性(/COPYALL开关)的目标目录。

  • 使用Java8。 为了获得最佳性能,我尝试用复制文件,但很快发现它不支持汉字。例如: 代码打算从jar复制一个文件,但它抛出了一个异常(a“我的" 文件夹已提前创建): 问题是鎴戠殑" 甚至连一个中国人都看不懂,所以我正在寻找一个解决办法来处理汉字。 我也尝试了FileChannel,但失败了,意识到它用于直接文件,而不是在一个jar中的文件。我该怎么做?

  • 我使用的是JUnit5Vintage,所以我的测试任务同时运行JUnit4和JUnit5测试。

  •        点击后即可选中要素,之后可以对要素的终点节点进行继续的绘制操作。

  • 我想运行一个Java应用程序。我使用JBoss服务器。我使用Maven。我使用Eclipse。我使用Eclipse将企业存档中的网络存档部署到服务器上。 对于小程序,我需要小程序的。applet.html的可访问文件夹中的类文件。我的想法是复制。class-从我的Web存档的目标文件夹到资源文件夹。所以我在Web-Maven-Project的pom.xml中添加了以下插件: 我想我把阶段和目标搞砸

  • 问题内容: 我正在VMWare下的SSD上用Node复制文件,但是性能很低。我已经用来衡量实际速度的基准测试如下: 但是,以下用于复制文件的节点代码非常慢,因此随后的运行不会使其速度更快: 运行方式为: 这里有什么问题,我该如何加快速度?我相信我可以通过调整缓冲区大小来更快地用C编写它。让我感到困惑的是,当我编写简单的几乎等同于pv的程序时,如下所示将stdin传递到stdout,它的速度非常快。