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

时间:2015-05-04 23:00:23

标签: python python-2.7

我的问题是我的输入文件包含空行(这是必须的),但当它到达空行时,: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"

在没有空行的文件上工作正常。

2 个答案:

答案 0 :(得分:2)

您无需在代码中声明或增加ienumerate为你做到了。另外增加你可能会意外触发你的条件;它与空行无关。

答案 1 :(得分:-1)

您的实现中的错误在另一个答案中解释,但为了实现我认为您想要做的事情,最好按如下方式处理,然后您不需要事先知道文件的长度:

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