繁体   English   中英

如何防止文本文件的读取停在空行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM