【问题标题】:effective use of python shutil copy2python shutil copy2的有效使用
【发布时间】:2011-06-11 04:58:54
【问题描述】:

如果我们看一下文件复制函数,我们可以看到有几个异常需要处理。一个很好的例子在这里: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)

我应该对上述功能做什么?

【问题讨论】:

  • 如果这是您的问题,我认为 Python 不会抛出 C# 异常。

标签: python file exception-handling copy shutil


【解决方案1】:

您可能只需要处理IOError 异常,该异常可能是由于任何权限或无效的目标名称问题引起的。

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

MSDN 文章中提到的其他异常似乎属于 python 中的相同 IOError。 FileNotFound 和 DirectoryNotFound 并不真正适用,因为如果目标不存在,shutil.copy 将创建目标。另外,我发现 OSError 的发生也是远程的,以防万一。

【讨论】:

  • 感谢您建议仅检查 OSError。我无法重现 shutil.copy 将创建目标目录,文档也不支持该声明。当shutil.copy'ing到一个不存在的目录时,我收到IsADirectoryError或FileNotFoundError异常,具体取决于是否指定了目标文件名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-25
相关资源
最近更新 更多