私は5GBファイルの内容を読み込み、それらをソートして重複を見つけようとしています。このファイルは、基本的に単なる数字のリストです(それぞれ新しい行にあります)。空行や数字以外の記号はありません。数字はすべてかなり大きい(少なくとも6桁)。私は現在使用中ですPythonのreadline()とreadlines()が動作しない
for line in f:
do something to line
メモリの問題を避けるためです。私はそれを使っても問題ありません。しかし、なぜ私はreadline()とreadlines()がうまくいかなかったのか知りたいです。試してみると、私がパラメータとして使用する数字に関係なく、プログラムは常に同じ行を返します。正確に言えば、私がreadline(0)を行うと、ファイルの最初の行が大きな数であっても、空の行を返します。私がreadline(1)を試しても、数字2がファイルにないのに2を返します。パラメータが> = 6の場合、常に同じ番号が返されます。291965
さらに、readlines()メソッドは、パラメータが何であっても常に同じ行を返します。 f.readlines(2)を印刷しようとしても、それでも1000個以上の数字のリストが得られます。
私が非常にうまく説明しているかどうかはわかりません。申し訳ありませんが、英語は私の母国語ではありません。とにかく、私はreadlineメソッドなしで動作させることができますが、実際に期待通りに動作しない理由を知りたいのです。
これは、ファイルの最初の10行がどのように見えるかです:私はf.readline(1)
は「数千行」を返す2
、またはf.readlines(10)
を返す再現することはできません
548098
968516
853181
485102
69638
689242
319040
610615
936181
486052
':あなたがもう一度
readline
を呼び出すと、それはバイトの合計量が指定された数よりも大きくなっている読むまでなど同様に、
f.readlines(10)
がフルラインを読みます、二行目を続行しますreadline(10) 'は" read line number 10 "を意味するのではなく、"行を読むが最大10バイトを読み込む " –ありがとう。私はこれを知らなかった! – Arda