簡體   English   中英

Python readline()和readlines()無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM