【发布时间】:2017-12-16 13:35:10
【问题描述】:
我正在尝试读取 5GB 文件的内容,然后对其进行排序并查找重复项。该文件基本上只是一个数字列表(每个都在一个新行上)。没有空行或除数字以外的任何符号。这些数字都很大(至少6位数)。我目前正在使用
for line in f:
do something to line
以避免内存问题。我很喜欢使用它。但是,我很想知道为什么 readline() 和 readlines() 对我不起作用。当我尝试
print f.readline(10)
无论我使用哪个数字作为参数,程序总是返回同一行。准确地说,如果我执行 readline(0) 它会返回一个空行,即使文件中的第一行是一个大数字。如果我尝试 readline(1) 它返回 2,即使数字 2 不在文件中。当参数 >= 6 时,总是返回相同的数字:291965。
此外,无论参数是什么,readlines() 方法总是返回相同的行。即使我尝试打印 f.readlines(2),它仍然会给我一个包含 1000 多个数字的列表。
我不确定我是否解释得很好。对不起,英语不是我的第一语言。无论如何,我可以在没有 readline 方法的情况下让它工作,但我真的很想知道为什么它们不能按预期工作。
文件的前 10 行如下所示:
548098
968516
853181
485102
69638
689242
319040
610615
936181
486052
【问题讨论】:
-
readline(10)的意思不是“读取第10行”,而是“读取一行,但最多读取10个字节” -
谢谢。我不知道这个!
标签: python file readline readlines