大多数情况下,当我读取文件时,最终都会变成这样:
with open('file.txt') as f:
for line in f:
my_function(line)
这似乎是一个非常普遍的场景,所以我想到了一种更短的方法,但这种方法安全吗?我的意思是文件会被正确关闭吗?或者您在这种方法中看到其他问题吗?
for line in open('file.txt'):
my_function(line)
编辑:感谢Eric,这似乎是最好的解决方案。希望我不会因此引发讨论,但是当我们想要在多个操作中使用行(而不仅仅是作为my_function的参数)时,您对此方法有何看法:
def line_generator(filename):
with open(filename) as f:
for line in f:
yield line
然后使用:
for line in line_generator('groceries.txt'):
print line
grocery_list += [line]
相较于iterate_over_file,这个函数有什么缺点吗?
with
更不安全”,或者它是否有缺点。或者你的意思是使用with
可以解决你提到的问题? - user1308345