python - 使用 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 行返回了单词。
解决方案
推荐阅读
- windows - PC-DOS vs MS-DOS vs Windows 多语言文本文件
- spss - 我可以避免在 SPSS 语法中硬编码文件位置吗?
- javascript - 登录表单可操作
- java - IBM MobileFirst 7.1 中生成密钥库的位置
- gradle - Gradle 与 cpp-application 插件,如何设置包含路径?
- vim - 如何使 vim 拼写错误仅搜索当前行?
- google-apps-script - 在谷歌表格中,我可以将标准函数包装在自定义函数中以控制它何时运行?
- python - 如果触发了某个标志,我想停止一个方法而不完成它的指令
- go - 使用 gofpdf 附加其他 pdf 文件
- python - 出现弹性搜索映射错误时如何查看显式字段名称