如何在脚本仍在运行时使shell输出重定向(>)写入?

noi*_*oio 10 python linux bash shell command-line

我写了一个永远不会终止的短脚本.这个脚本不断生成输出,我不得不每次检查.我在实验室计算机上通过SSH运行它,并将输出重定向到该机器上的public_html文件夹中的文件.

python script.py > ~/public_html/results.txt
Run Code Online (Sandbox Code Playgroud)

但是,当我刷新地址时,结果不会立即显示.当我终止程序时,结果显示出来,但正如我所说,它不会自行停止.这个redirect(>)是否与写作一样懒惰?有没有办法连续(或间隔)更新文件中的结果?

或者是网络服务器在仍在编写时不更新文件?

nc3*_*c3b 15

sys.stdout.flush()如果要立即查看,则需要刷新输出(或smth).看到这个


Jür*_*zel 7

stdout是缓冲的,如果没有连接到终端.

您可以通过stdbuf将此策略更改为line-buffering

stdbuf -oL python script.py > ~/public_html/results.txt
Run Code Online (Sandbox Code Playgroud)

因此,如果不需要行缓冲,则不必刷新Python脚本并保持IO效率.