Python 如何显示有关错误的信息?
请帮助显示错误消息Python 如何显示有关错误的信息?,python,python-3.x,Python,Python 3.x,请帮助显示错误消息 def download(path, name): #urllib.URLopener().retrieve(prefix + path, name) img = urllib.request.urlopen(prefix + path).read() try: f = open(name, "wb") f.write(img) except PermissionError: print('Per
def download(path, name):
#urllib.URLopener().retrieve(prefix + path, name)
img = urllib.request.urlopen(prefix + path).read()
try:
f = open(name, "wb")
f.write(img)
except PermissionError:
print('PermissionError')
except:
print(error)
finally:
f.close()
如果写入失败,脚本将写入
许可误差
但如果有其他错误,我需要显示有关错误的完整信息。不是
错误
有可能实施吗
def download(path, name):
#urllib.URLopener().retrieve(prefix + path, name)
img = urllib.request.urlopen(prefix + path).read()
try:
f = open(name, "wb")
f.write(img)
except PermissionError:
print('PermissionError')
except Exception as exc:
print(exc)
finally:
f.close()
但是捕捉任何和所有这样的异常都不是一个好主意;只捕获您在那里期望的异常。如果真的发生了不好的事情,那么这些异常应该传播给用户,程序真的应该停止在那里
事实上,如果您想打开更多failsave文件,请通过with
语句使用上下文管理器:
with open(name, "wb") as f:
<do stuff>
<done here>
以open(名称,“wb”)作为f的:
文件f
以这种方式自动关闭;用finally
语句无需担心
但是捕捉任何和所有这样的异常都不是一个好主意;只捕获您在那里期望的异常。如果真的发生了不好的事情,那么这些异常应该传播给用户,程序真的应该停止在那里
事实上,如果您想打开更多failsave文件,请通过with
语句使用上下文管理器:
with open(name, "wb") as f:
<do stuff>
<done here>
以open(名称,“wb”)作为f的:
文件f
以这种方式自动关闭;无需担心最后的语句。您可以这样做:
try:
…
except PermissionError:
print('PermissionError')
except Exception as e:
print(e)
注意,你不应该只是这样。特别是对于文件操作,您可以轻松地选择OSError
作为尝试打开文件时可能发生的最常见异常,同时保留其他关键异常
此外,与手动关闭文件相比,最好使用。这还可以确保无论是否出现异常,文件都已关闭:
def download (path, name):
img = urllib.request.urlopen(prefix + path).read()
try:
with open(name, "wb") as f:
f.write(img)
except PermissionError:
print('PermissionError')
您可以这样做:
try:
…
except PermissionError:
print('PermissionError')
except Exception as e:
print(e)
注意,你不应该只是这样。特别是对于文件操作,您可以轻松地选择OSError
作为尝试打开文件时可能发生的最常见异常,同时保留其他关键异常
此外,与手动关闭文件相比,最好使用。这还可以确保无论是否出现异常,文件都已关闭:
def download (path, name):
img = urllib.request.urlopen(prefix + path).read()
try:
with open(name, "wb") as f:
f.write(img)
except PermissionError:
print('PermissionError')