リストアするデータの開始位置を調べるのに が必要なため、.readline()を使用してファイルを1行ずつ解析し、末尾に 展開を一時停止し、ファイルの終わりまで繰り返します。 読み込むための私のファイルは、次のようにフォーマットされます。大きなファイルの読み込みにPython 2.7のメモリが多すぎる
blabla... useless.... ... /sign/ data block(e.g. 10 cols x 1000 rows) ... blank line /sign/ data block(e.g. 10 cols x 1000 rows) ... blank line ... EOF
はのは、「myfileを」 このファイルを呼び出すと、私のpythonスニペットてみましょう:
f=open('myfile','r')
blocknum=0 #number the data block
data=[]
while True:
# find the extract begnning
while not f.readline().startswith('/sign/'):pass
# creat multidimensional list to store data block
data=append([])
blocknum +=1
line=f.readline()
while line.strip():
# check if the line is a blank line, i.e the end of one block
data[blocknum-1].append(["2.6E" %float(x) for x in line.split()])
line = f.readline()
print "Read Block %d" %blocknum
if not f.readline(): break
実行した結果は、500Mのファイルを読まれたことはほぼ2ギガバイトのRAMを消費、私は それを把握することができない、誰かの助け! ありがとうございました!
コードを確認してください。それは異なる書式設定、意味論的および構文的問題( 'append'はどこから来たのですか?)を持っています。また、標準のpythonインデント(4スペース)を使用し、同じ行に複数のステートメントを記述しないことも検討してください。 – GaretJax
一般的なデータブロックを数行表示することもできますか? – NPE