テキストファイルの先頭に出力する必要があるヘッダー行があり、次の行には、データの行数に関する情報が含まれている必要があります。
最終的な出力ファイルには、次の内容が含まれている必要があります。
- 最初の前のヘッダー行
\n
- ファイルの長さ (つまり、2 番目より前の行数
\n
- 文字列の未知の行
問題は、(2) 文字列の行数を最初に知らずに、どうすればコンテンツを満たすことができるかということです。
私はそのようにしてきました:
- ヘッダー行を書く
" "
50文字の偽の行を書く.- #lines のカウンターを保持しながら、文字列の不明な行を書き込みます
- ヘッダー行の最後までシークする
- 2 行目に #line 行を書き、残りはその
" "
ままにします - ファイルを閉じます (最大 19GB 相当の文字列になると想像してください)
例のために、私は行数を生成するために使用random.random()
し、私はこのようにしてきました:
import random
fout = open('testoverwrite','w')
header = "%% this is a header line"
print>>fout, header
print>>fout, "".join((" ")*50)
total = 0
numrows = int(100*random.random())
for i in range(numrows):
j = int(100*random.random())
total+=j
print>>fout, j
fout.seek(len("%% this is a header line\n"))
#print len(str(numrows)+" "+str(total))
if len(str(numrows)+" "+str(total)) < 50:
fout.write(str(numrows)+" "+str(total))
fout.close()
これを行うより良い方法はありますか?