端末で小さなcli Pythonアプリケーションを実行しています。無限に繰り返して端末にテキストを出力します。テキストをファイルに出力したいです。次のコマンドを使用してこれを実行できますが、python [my cli app] >> log.txt
ファイルを閉じて効果的に保存するには、ループを中断する必要があります。ループがバックグラウンドで実行されている間にテキストファイルから最新のコンテンツを読み取る方法はありますか?
だから基本的に:
~ $ [INFINITE LOOP] >> log.txt
その後、永遠に実行中にアクセスしようとしますlog.txt
。現在は、Ctrl+ stopコマンドを使用している場合にのみ端末出力をファイルに保存しますC。
これが説明されることを願っています。
答え1
シミュレーション.py:
(1秒あたり10ライン出力)
#!/usr/bin/env python
import time
i=0
while True:
print("{} what up {}".format(i,i%10))
if i%10==9:
time.sleep(1)
i+=1
ターミナルから:
$ stdbuf -oL python simulation.py >> log.txt
もう一つ:
$ tail -f log.txt #10 new lines every second
答え2
PSkocikの答えの処理:
変える
$ stdbuf -oL python simulation.py >> log.txt
する
$ stdbuf -oL python simulation.py | tee log.txt
これにより、同じ画面でプログラムの生出力を表示できます。