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

我最终追查到makecolormake我们的/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 回答