30792


Pythonで以下のコードを使ってcsvファイルに書き込みをしたいのですが。

[code]

    with open(DIST, 'a') as f:
        writer = csv.writer(f, lineterminator='\n')
        for label in labels:
            a = []
            for word in label:
                a.append(GetResult(word).encode('utf-8'))
            writer.writerow(a)
    
[/code]

これをフォアグラウンドで実行しているときには途中でプログラムを停止してもcsvファイルに書き込みされていることが確認できますが、バックグラウンドで実行した時には途中でcsvファイルを確認しても書き込みされていません。更にプロセスをkillした後にcsvファイルを確認しても情報が記述されていません。

バックグラウンドでも随時ファイルへの書き込みを行うことは可能なのでしょうか。


CC BY-SA 3.0
2016-11-30T07:32:15.087
30790
2016-11-30T08:13:59.320
7232
question
python csv
バックグラウンドで随時ファイルに書き込みたい


例えば`writer.writerow(a)`の後に`writer.flush()`を実行したり、バッファサイズを0にすることで、随時ファイル出力を行うことができると思うのですが、いかがでしょうか。

[code]

    with open(DIST, 'a', 0) as f:
    
[/code]

ちなみに[本家StackOverFlowの記事](https://stackoverflow.com/questions/3167494/how-
often-does-python-flush-to-a-file)によると、pythonのファイル書き込みタイミングはOS依存です。  
FYIですが、バッファサイズに入れる値は、0, 1, マイナス、それ以外で意味が異なるそうです。

  * 0=バッファしない
  * 1=1行ごとにバッファする
  * マイナス=OSのデフォルト値
  * それ以外の正の数=任意のバッファサイズ`


CC BY-SA 3.0
2016-11-30T08:13:59.320
30792
2016-11-30T08:13:59.320
2017-05-23T12:38:55.307
-1
9820
30790
answer