如何关闭此文件或文件是否像上下文管理器with
lines = open(file_name).readlines()
我想避免使用with
语句,因为上面的语句是单行,但现在我看到上面说的语句没用,因为我们无法关闭文件。
with open(file_name) as f:
.....
答案 0 :(得分:2)
如果您倾向于在表达式中使用open(filename)
而不是with
语句,请在您自己的函数中包装with语句,并在表达式中使用它。
def open_readlines_and_close(filename, *args, **kwargs):
with open(filename, *args, **kwargs) as file:
lines = file.readlines()
return lines
lines = open_readlines_and_close(file_name)
# apologies for the weird function name
如果您愿意,还可以使用生成器来减少内存占用。
答案 1 :(得分:1)
lines = (lambda f=open(file_name): [f.readlines(), f.close()][0])()
然而,这不会被认为是Pythonic,因为它不太可读。
答案 2 :(得分:0)
您可以使用with
这样做的好处是文件在套件完成后正确关闭,即使在途中引发了异常。
with open(file_name, 'r') as readfile:
lines = readfile.readlines()