2

次の例のPythonプログラムは、更新プログレスバーを出力します。

progress.py :

import sys
import time

for i in range(100):
    sys.stdout.write("\r%3d%%" % (i + 1))
    sys.stdout.flush()
    time.sleep(.02)
sys.stdout.write("\n")

ただし、次のMakefileを使用してGNU Make(UbuntuのBashから)で実行すると、改行文字が検出されるまで出力がバッファリングされているように見えるため、進行状況の更新は表示されません。念のため、バッファリングされていない出力はPythonに指定されています。

all :
    python -u progress.py

makeを使用するときに部分行出力をすぐに表示する方法はありますか?

4

1 に答える 1

3

私は最終的にこれを追跡して、makeでエイリアス化されたことを確認しcolormakeました/etc/bash.bashrc

> type make
make is aliased to `colormake'

colormake出力をバッファリングしているようです。おそらく、色を付ける前に行全体を解析する必要があります。

これは、以下を追加することで修正されました。

unalias make

~/.bashrc

> type make
make is /usr/bin/make
于 2012-10-25T15:46:57.307 に答える