打开文件并阅读其内容的简单方法是使用with
:
with open ('file.txt', "r") as filehandle:
contents = filehandle.read()
但是,这不包括以try/except
的方式排除文件打开错误:
try:
filehandle = open('file.txt', 'r')
contents = filehandle.read()
except IOError:
print('There was an error opening the file!')
sys.exit()
是否有一种方法可以在with语句中集成失败消息,以便在开放失败的情况下优先退出,这将在比第二个示例更少的代码行中完成但提供相同的功能?如果不是这样,有没有比第二种形式更优雅(或极简主义)的东西?
答案 0 :(得分:0)
from contextlib import contextmanager
@contextmanager
def safe_open(fname,mode):
try:
fh = open(fname,mode)
except IOError:
print "ERROR OPENING FILE :",fname
sys.exit()
else:
yield fh
try:
fh.close()
except:
pass
with safe_open("nofile","rb") as f:
f.write("blah")
我不确定它更优雅但是...... ...