2017-09-06 19 views
5

Pythonでは、大きなファイルを読み込んでいます。空のリストに各行を追加したいと思います。私は最初の数行にこれをしたいので、私はやった:ファイルからの1行が大きすぎますか?

X = [] 
for line in range(3): 

    i = file.readline() 
    m = str(i) 
    X.append(m) 

しかし、エラーが現れ、ライン i = file.readline()ためMemoryErrorがあると言います。

どうすればよいですか?範囲を1にしても同じです(ただし、ループ内にあるので、どのように影響するかはわかりませんが)。

エラーコードはどのように取得できますか?私は反復処理をしています。ファイルは整数だけではないので、バイナリファイルにすることはできません。小数点以下の数字があります。

txtファイルは5ギガバイトです。

アイデア?

+0

このファイルの大きさはどれくらいですか?あなたのコンピュータにどれくらいのメモリがありますか?線はどのように見えますか? – birryree

+0

行を1つの文字列として読み込むのに十分なメモリがありません。ファイルを一度に少しずつ処理し、すべてをメモリに保持しない方法を解説します。 – Blender

+3

ファイルで使用されている行終了規則は何ですか? 'readline'が期待される行の終わりを見つけておらず、結果としてファイル全体をメモリに読み込むので、あなたはエラーを表示しているように見えます。 – chepner

答えて

4

filehandle.readline()改行文字(\n)で改行する - ファイルに巨大な行や改行がない場合は、別の方法でチャンクする必要があります。

通常、ファイルをチャンクで読み取り、それらのチャンクを1つずつ処理することがあります。

どのようにファイルを分割する可能性がありますか?たとえば、一度に1024バイトしか読み込めず、そのチャンクで作業できますか?

そうでなければ、複雑なリーダーを設計するのではなく、ファイルの形式を整理する方が簡単です。

関連する問題