Python-如何将文件复制到已包含其他文件的目录中(不替换它们)?

时间:2018-04-07 00:54:25

标签: python

如何将文件复制到已包含其他文件的目录中(不替换它们)?我基本上需要从不同的源和目录(所有具有异构名称和目录结构)收集文件,并将它们全部放入一个文件夹中。到目前为止,我已经能够创建目标目录并复制初始文件,但是一旦目录已经存在,它就不会复制后续文件......

'''COPY FILES AND DIRECTORIES FROM src (SOURCE) TO dest (DESTINATION)'''
import errno
import shutil
def copy(src, dest):
    try:
        shutil.copytree(src, dest)
    except OSError as e:
        # If the error was caused because the source wasn't a directory
        if e.errno == errno.ENOTDIR:
            shutil.copy2(src, dest)
        else:
            print('Directory not copied. Error: %s' % e)

copy("source.directory", "Destination/Directory")

在创建目标目录并复制第一个文件后,将返回以下错误:

Directory not copied. Error: [Errno 17] File exists: 'Destination/Directory'

1 个答案:

答案 0 :(得分:1)

您不能以这种方式使用div。一旦它在某个子树上出现错误,就会从该子树中解脱出来。在它返回错误之后,无法从中断的地方恢复

但请注意,shutil docsthe source code的链接。许多标准库都是故意编写的,不仅可以用作库,还可以用作示例代码。它并不复杂 - 事实上,唯一真正棘手的部分是它收集错误的方式,因此它可能会失败,这是你不想要的一部分。

因此,将该函数转换为您自己的代码并修改它以按您希望的方式处理错误。