ファイルからintを読み取るにはどうすればよいですか? 次のような整数データを含む大きな(512MB)txtファイルがあります。
0 0 0 10 5 0 0 140
0 20 6 0 9 5 0 0
を使用するc = file.read(1)
と、一度に 1 文字しか取得できませんが、一度に 1 つの整数が必要です。お気に入り:
c = 0
c = 10
c = 5
c = 140 and so on...
どんな素晴らしい心でも助けてください。前もって感謝します。
ファイルからintを読み取るにはどうすればよいですか? 次のような整数データを含む大きな(512MB)txtファイルがあります。
0 0 0 10 5 0 0 140
0 20 6 0 9 5 0 0
を使用するc = file.read(1)
と、一度に 1 文字しか取得できませんが、一度に 1 つの整数が必要です。お気に入り:
c = 0
c = 10
c = 5
c = 140 and so on...
どんな素晴らしい心でも助けてください。前もって感謝します。
1 つの方法を次に示します。
with open('in.txt', 'r') as f:
for line in f:
for s in line.split(' '):
num = int(s)
print num
そうfor line in f
することで、少しずつ読んでいます(どちらread() all
も使用していませんreadlines
)。ファイルが大きいため、重要です。
次に、各行をスペースで分割し、各数字を読み上げます。
ファイルに破損したデータが含まれている場合にバーフする単純な例よりも多くのエラー チェックを実行できます。
コメントが言うように、これで十分なはずです。それ以外の場合は、ファイルに非常に長い行が含まれる可能性がある場合は、一度にブロックを読み取るなどのトリッキーなことを行うことができます。
512 MB は実際にはそれほど大きくありません。とにかくデータのリストを作成する場合は、読み取りステップを一度に実行しても問題はありません。
my_int_list = [int(v) for v in open('myfile.txt').read().split()]
メモリ内のリスト全体が必要ないようにコードを構造化できる場合は、ジェネレーターを使用することをお勧めします。
def my_ints(fname):
for line in open(fname):
for val in line.split():
yield int(val)
そしてそれを使用します:
for c in my_ints('myfile.txt'):
# do something with c (which is the next int)
私はそれをこのようにします: