10

python でストリーミング文字列をファイルとして書き込む方法を勉強しています。

通常、式を次のように使用します

myfile = open("test.txt", w)
for line in mydata:
...     myfile.write(line + '\n')
myfile.close()

Python はディレクトリにテキスト ファイルを作成し、一定の間隔でチャンクごとに値を保存します。

次の質問があります。

バッファを設定することは可能ですか? (例: 20 MB ごとにデータを保存) 行単位で保存できますか?

提案をありがとう、彼らは常に改善するのに役立ちます

4

1 に答える 1

18

Python のファイル I/O は既にバッファリングされています。このopen()関数を使用すると、書き込みがバッファリングされる範囲を決定できます。

オプションのbuffering引数は、ファイルの希望するバッファ サイズを指定します。0バッファなし、1行バッファあり、その他の正の値は (ほぼ) そのサイズのバッファを使用することを意味します。システムのデフォルトを使用する否定的なbuffering意味。これは通常、tty デバイス用にライン バッファリングされ、他のファイル用に完全にバッファリングされます。省略した場合、システムのデフォルトが使用されます。

with個人的には、このファイルをステートメントを通じてコン​​テキスト マネージャーとして使用します。スイートの下のすべてのステートメントwith(少なくとも 1 つのインデント レベルより深い) が完了する、例外が発生するとすぐに、ファイル オブジェクトは閉じられます。

with open("test.txt", 'w', buffering=20*(1024**2)) as myfile:
    for line in mydata:
        myfile.write(line + '\n')

上記の例では、バッファーを 20 MB に設定しています。

于 2013-01-04T14:28:17.380 に答える