首页 > 解决方案 > 使用 f.readline() 从文件中读取的行数比实际文件中的行数多

问题描述

我正在尝试创建一个排序功能来按长度排序单词,所以第一步是找到最长的单词。

为了做到这一点,我生成了以下代码,它按预期工作,但是有一个错误引起了我的注意,我试图找出导致它的原因。

替换一个单词后,缓冲区总是会像空的一样读取下一行,但最终会到达下一个单词,但会证明读取是在错误的行中完成的。

def sort():
    f = open("source.txt","r")
    w = open("result.txt","a+")
    word = ''
    og_lines = sum(1 for line in open('source.txt'))
    print("Sorting",og_lines,"words...")
    new_lines = 1
    lenght = 0
    word = f.readline(new_lines)
    new_lines+=1
    buffer=f.readline(new_lines)
    while (buffer != ''):
        if (len(buffer)>len(word)):
            word=buffer
            print("change")
        new_lines+=1
        print(new_lines, "lines read")
        buffer=f.readline(new_lines)
        buffer.rstrip()
    lenght = len(word.rstrip())
    print("Longest word is",word.rstrip(),lenght)

预计会读取 25 行,但由于它在此过程中发现了 4 次较长的单词,因此它最终读取了不存在的第 29 行,但又从真正的第 25 行返回了单词。

标签: pythonpython-3.xfiletext

解决方案


推荐阅读