Emm*_*een 5 directory exception-handling python-3.x
我正在学习Python 3,并尝试编写一个将复制目录的脚本。我正在使用shutil.copytree。从Python文档中说:
如果发生异常,则会引发错误并列出原因。
此异常收集在多文件操作期间引发的异常。对于copytree(),exception参数是一个三元组的列表(srcname,dstname,exception)。
在示例中,他们这样做:
except Error as err:
errors.extend(err.args[0])
Run Code Online (Sandbox Code Playgroud)
这是我的脚本:
def copyDirectory(src, dest):
errors = []
try:
shutil.copytree(src, dest)
except Error as err:
errors.extend(err.args[0])
source="C:/Users/MrRobot/Desktop/Copy"
destination="C:/Users/MrRobot/Desktop/Destination"
copyDirectory(source, destination)
moveDirectory(destination,"I:/")
Run Code Online (Sandbox Code Playgroud)
问题:
您如何正确捕获使用时可能发生的异常shutil.copytree(假设以上脚本不正确)?
那您如何查看发生的错误,我将遍历整个errors阵列?
捕获异常时,您需要包括模块名称:
except shutil.Error as err:
Run Code Online (Sandbox Code Playgroud)
或显式导入:
from shutil import copytree, Error
# the rest of your code...
try:
copytree(src, dest)
except Error as err:
errors.extend(err.args[0])
Run Code Online (Sandbox Code Playgroud)
要查看回溯和异常信息,您有几种选择:
不要抓住例外。您的脚本将被暂停,所有错误信息将被打印。
如果您希望脚本继续执行,那么您实际上是在问这个SO问题的重复项。我会提到这个问题;接受的答案写得很好。
顺便说一句,您应该避免将其称为数组。这个特定异常对象具有列表的元组,和阵列是一个完全不同的数据结构。
| 归档时间: |
|
| 查看次数: |
5138 次 |
| 最近记录: |