使用生成器函数从文件中读取行是否有任何优势?我问这个是因为我在剧本中看到了类似的东西:
with open(file, 'r') as f:
liter = (l.rstrip("\r\n") for l in f) # <generator object <genexpr> at 0x10617c728>
for line in liter:
这种方法会比简单的块更好(或在什么情况下):
with open(file, 'r') as f:
for line in f:
line = line.rstrip("\r\n")
答案 0 :(得分:1)
第一种方法并没有带来太多:
如果您可以在一行中编写代码而没有循环,那将会有兴趣:
\r
(创建一个非空行列表,也就是说,作为旁注,你不必从行尾删除\r
,因为文本模式已经这样做了,除非是当然有超过1 lambda
个字符,这是非标准的)
或者在stripped_lines = lambda f : (l.rstrip("\n") for l in f)
中,您将使用整个代码以避免忘记删除那些该死的换行符:
for l in stripped_lines(f):
...
然后
.op
第二种方法更清晰,更简单如果你必须使用一个循环(如果你有副作用调用,建议它避免理解并改用循环)