3

サブプロセスでいくつかのプロセスを開始するスクリプトがあります。ここで、自分自身の出力とサブプロセスの出力を含むログ ファイルを書きたいと思います。

log = open(LOG,'w')
for tasks in tasklist:
  log.write('log text')
  ... some code and log text ...
  sp = subprocess('task[0]',stdout=log)
  sp.wait()
  log.write('log text')
  sp = subprocess('task[1]',stdout=log)
  sp.wait()
  log.write('log text')
  sp = subprocess('task[2]',stdout=log)
  sp.wait()
  log.write('log text')

現在、サブプロセスの出力を一番上に書き込み、次に私が書いたすべてを書き込みます。サブプロセスを開始する前に毎回ファイルを閉じて再度開くより良い方法はありますか?

4

1 に答える 1

2

書き込みごとに Python バッファをフラッシュする必要があります。

log.write('log text')
log.flush()

サブプロセスは書き込みをバッファリングしないため、データは python が書き込む前にログファイルに記録されます。Python の書き込みは最終的にそのバッファーに格納され、そのバッファーがいっぱいになるまでフラッシュされません。

于 2012-10-28T11:34:31.403 に答える