请帮助显示错误消息。
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()
如果写入失败,则脚本写入
PermissionError
但如果还有其他错误,我需要显示有关错误的完整信息。不是
错误
可以实施吗?
答案 0 :(得分:2)
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()
但抓住像这样的任何和所有例外并不是一个好主意; 仅捕获您期望的异常。如果发生了非常糟糕的事情,那些异常应该传播给用户,程序真的应该停在那里。
实际上,如果您想要更多的failave文件打开,请通过with
语句使用上下文管理器:
with open(name, "wb") as f:
<do stuff>
<done here>
文件f
会以这种方式自动关闭;不用担心finally
声明。
答案 1 :(得分:2)
你可以这样做:
try:
…
except PermissionError:
print('PermissionError')
except Exception as e:
print(e)
请注意,您不应仅仅catch all exceptions这样。特别是对于文件操作,您可以轻松选择OSError
作为尝试打开文件时可能发生的最常见的异常,同时在其中留下其他关键异常。
此外,使用with
首选手动关闭文件。无论您是否收到任何异常,这也可以确保文件已关闭:
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')