shutil.copytree 遇到错误时的行为是什么?

What's shutil.copytree's behavior when it encounters an error?

我只是想知道 python2.7 shutil 的 copytree 函数在遇到文件错误时的行为是什么,让它成为文件不可读、文件损坏或权限问题。我检查了文档,它没有具体说明除了引发错误之外它的行为方式。但是我需要知道在引发该错误(并假设它被捕获)之后,它会继续处理剩余的文件吗?如果不是,是否有一种方法可以指定该函数,使其以这种方式运行?

我知道我可以递归地使用 copy2 但我真的不想重新发明轮子,除非必要。

如果shutil.copytree遇到异常,就捕获异常,记录下来,然后继续。最后,它会引发一个 shutil.Error,其中列出了已发生的问题情况。

这没有很好的记录,但在 source 中可见。文档行 "If exception(s) occur, an Error is raised with a list of reasons." 也暗示了该函数可能遇到多个异常。


至于shutil.copy2,它只复制了一个文件,如果复制失败就无法合理继续。如果它无法复制文件,则会引发错误。如果发生这种情况,文件可能会被复制一半。