我阅读文件的时间占90%,最终结果如下:
with open('file.txt') as f:
for line in f:
my_function(line)
Run Code Online (Sandbox Code Playgroud)
这似乎是一个非常常见的情况,所以我想到了一个更短的方式,但这样安全吗?我的意思是文件是否正确关闭,或者您是否看到此方法存在任何其他问题?:
for line in open('file.txt'):
my_function(line)
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢Eric,这似乎是最好的解决方案.希望我不要将此与此讨论,但是当我们想在几个操作中使用line(而不仅仅是my_function的参数)时,您如何看待这种方法:
def line_generator(filename):
with open(filename) as f:
for line in f:
yield line
Run Code Online (Sandbox Code Playgroud)
然后使用:
for line in line_generator('groceries.txt'):
print line
grocery_list += [line]
Run Code Online (Sandbox Code Playgroud)
这个函数是否比iterate_over_file有缺点?
如果您经常需要这个,您可以随时定义:
def iterate_over_file(filename, func):
with open(filename) as f:
for line in f:
func(line)
def my_function(line):
print line,
Run Code Online (Sandbox Code Playgroud)
你的pythonic单线现在是:
iterate_over_file('file.txt', my_function)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
91 次 |
最近记录: |