python - 如何在python中捕获copytree的异常
问题描述
国家的文件shutil.copytree
:
如果发生异常,则会引发错误并列出原因。
链接指的是:
异常 shutil.Error 此异常收集在多文件操作期间引发的异常。对于 copytree(),异常参数是 3 元组(srcname、dstname、异常)的列表。
这是什么shutil.Error
异常?我试图捕捉这种类型的异常:
try:
shutil.copytree(source, dest) # this throws a FileExistsError for example
except shutil.Error:
# error handling
但是没有提出这种错误..
解决方案
文档首先说明
dirs_exist_ok
指示在 dst 或任何缺少的父目录已经存在的情况下是否引发异常。
除非你指定dirs_exist_ok=True
aFileExistsError
被提出。您是对的,稍后在文档中指出(可能在其他情况下)shutil.Error
可能会提出 a 。
最后我认为这是一个解释问题,但如果代码引发 aFileExistsError
你应该抓住 a FileExistsError
:
try:
shutil.copytree(source, dest)
except FileExistsError:
# error handling
>>> shutil.copytree("ws", "workshop")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/robin/.pyenv/versions/3.8.6/lib/python3.8/shutil.py", line 554, in copytree
return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
File "/home/robin/.pyenv/versions/3.8.6/lib/python3.8/shutil.py", line 455, in _copytree
os.makedirs(dst, exist_ok=dirs_exist_ok)
File "/home/robin/.pyenv/versions/3.8.6/lib/python3.8/os.py", line 223, in makedirs
mkdir(name, mode)
FileExistsError: [Errno 17] File exists: 'workshop'
>>> shutil.copytree("ws", "workshop", dirs_exist_ok=True)
'workshop'
您引用的部分shutil.Error
可以解释为:
此异常收集在多文件操作期间引发的异常。对于 copytree(),[当 a
shutil.Error
被引发] 异常参数是 3 元组(srcname、dstname、异常)的列表。
这并不意味着所有异常 duringcopytree()
都将是 type shutil.Error
。
推荐阅读
- javascript - 如何创建在 JS 中按下按钮时显示的微调器动画?
- java - 如何在 Java 中成功地从书中删除标签?
- javascript - 组件加载后运行 API 获取请求
- javascript - 如何在特定值为 1 的 jQuery.each 中计数
- android - Android StringRequest 未捕获 Laravel 错误
- python - Python在类文件对象中重写`read()`类方法
- ios - CloudKit正确接收和存储时间,查询时返回UTC时间
- node.js - 扫描币安智能链(nodejs + web3)上的所有智能合约创建
- azure - 如何在 Azure Web App 服务上部署 Kafka
- dc.leaflet.js - 如何访问 dc.leaflet.js 图表的图层,以便能够通过图层控件打开/关闭它?