[英]How to prevent the reading of a text file from stopping at an empty line?
我的问题是我的输入文件包含空行(这是必须的),但是当它到达空行时, for i, line in enumerate(file):
停止读取文件。 我该如何预防?
读取文件是这样的,因为除了文件的最后一行,我需要对每一行都做某件事,而不是最后一行。 (这也是必须的。)
这是我想要做的:
with open(sys.argv[1]) as file:
i = 0
for i, line in enumerate(file):
# Do for all but last line
if i < linecount-1:
print "Not last line"
i += 1
# Do for last line
if i == linecount-1:
print "Last line"
对于没有空行的文件,它可以正常工作。
您无需在代码中声明或递增i
。 enumerate
为您做到这一点。 随着操作的增加,可能会意外触发条件。 它与空行无关。
实现中的错误将在另一个答案中进行解释,但是要实现我认为您想做的事情,最好按以下方式进行处理,那么您无需事先知道文件的长度:
import sys
def process_regular_line(line):
print 'regular line', line
def process_last_line(line):
print 'last line:', line
with open(sys.argv[1]) as file:
last_line = file.readline()
while True:
this_line = file.readline()
if not this_line:
process_last_line(last_line)
break
process_regular_line(last_line)
last_line = this_line
例如,在具有5行的测试文件上:
a line
another line
a line after a blank line
The last ever line
你得到:
regular line: a line
regular line: another line
regular line:
regular line: a line after a blank line
last line: The last ever line
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.