有效使用python shutil copy2

2 投票
1 回答
9796 浏览
提问于 2025-04-16 10:11

如果我们看看一个文件复制的功能,就会发现有很多不同的错误需要处理。这里有一个很好的例子:http://msdn.microsoft.com/en-us/library/9706cfs5.aspx

我想问的是,如果我使用Python的shutil库里的copy2函数,我应该注意哪些方面来处理各种错误(比如源文件找不到、没有访问权限等等)?

例如:

def copy_file (self):   
    if not os.path.isdir(dest_path):
        os.makedirs(dest_path)
    shutil.copy2(src_path, dest_path)

我应该对上面的函数做些什么?

1 个回答

9

你可能只需要处理一下可能因为权限问题或者目标名称无效而引发的 IOError 异常。

try:
    shutil.copy(src,dst)
except IOError as e:
    print e

在MSDN文章中提到的其他异常似乎都属于Python中的同一种IOError。FileNotFound(文件未找到)和DirectoryNotFound(目录未找到)其实不太适用,因为如果目标不存在,shutil.copy会自动创建目标。此外,我发现OSError在这种情况下也很少出现。

撰写回答