readline() 跳过源文件中的行

10 投票
3 回答
18382 浏览
提问于 2025-04-16 21:04

我有一个.txt文件,里面有很多行。

当我用一个循环来逐行处理的时候,发现它跳过了一些行。

它跳过了第一行,从第二行开始,然后打印第四行、第六行,等等。

我到底漏掉了什么呢?

def main():
    # Open file line_numbers.txt
    data_file = open('line_numbers.txt', 'r')

    # initialize accumulatior
    count = 1
      

    # Read all lines in data_file
    for line in data_file:
        # Get the data from the file
        line = data_file.readline()

        # Display data retrieved
        print(count, ": ", line)

        # add to count sequence
        count += 1

3 个回答

4

这段代码for line in data_file已经帮你获取了每一行的文本,接下来再调用readline就会获取到下一行。换句话说,如果你去掉readline的调用,就能达到你想要的效果。同时,你也不需要自己去管理一个累加器变量,Python有一个内置的方法可以做到这一点,使用enumerate就可以了。也就是说:

data_file = open('line_numbers.txt', 'r')
for count, line in enumerate(data_file):
    ...
11

你的for循环正在遍历data_file,而你的readline()方法正在和它争抢资源。为了得到这个结果,删除代码中的line = data_file.readline()这一行:

# Read all lines in data_file
count = 1
for line in data_file:
    # Display data retrieved
    print(count, ": ", line)

    # add to count sequence
    count += 1
12

试着把“line=data_file.readline()”这一行完全去掉?我觉得“for line in data_file:”也是在读取一行内容。

撰写回答