![](/img/trans.png)
[英]Difference in read(), readline() and readlines() in Python
[英]Python readline() and readlines() not working
我正在嘗試讀取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
我無法重現返回2
f.readline(1)
或返回“數千行”的f.readlines(10)
,但是似乎您誤解了這些函數的整數參數的作用。
這些數字未指定要讀取的行號,但將讀取readline
的最大字節數。
>>> f = open("data.txt")
>>> f.readline(1)
'5'
>>>f.readline(100)
'48098\n'
這兩個命令將從第一行548098
; 第一個命令只讀取1
個字節,第二個命令讀取其余的行,因為剩下的字節數少於100個。 如果再次調用readline
,它將繼續第二行, readline
。
同樣, f.readlines(10)
將讀取整行,直到讀取的字節總數大於指定的數字為止:
>>> f.readlines(10)
['968516\n', '853181\n']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.