所以我正在阅读如何在python中正确使用with
关键字,我无法找出处理with语句中可能发生的异常的最佳方法。所以我正在写一个非常简单的脚本来为文件写一个值。
json = loads(response.read())
try:
with open(args.file, 'w') as t:
try:
t.write(json[TOKEN])
print "Wrote token to {file!s}".format(file=args.file)
except KeyError:
print "Unable to find {token!s} in response".format(token=TOKEN)
except IOError as bad:
print "Ran into an error while trying to open file {file!s}".format(file=args.file)
print "{err!s}".format(bad.message)
我想确定如果发现KeyError文件仍然会正常关闭。
答案 0 :(得分:0)
我在以下文档https://www.python.org/dev/peps/pep-0343/中找到了答案,该文件位于评论中提供的链接中。
根据此处的链接,使用with
关键字时会发生什么。要使用with
关键字,您的表达式必须包含__enter__(self)
和__exit__(self, type, value, traceback)
方法。 Python将尝试调用__enter__()
方法,然后调用您的代码块,然后使用__exit(self, type, value, traceback)
方法运行finally。这将确保所有设置和拆除都得到相应的完成。至少这是我对关键字的理解。