1. ホーム
  2. python

[解決済み] linux teeがpythonで動作しない?

2022-07-30 09:56:36

質問

無限ループでWebサーバと通信するPythonスクリプトを作りました。 全ての通信データをファイルに記録し、同時にターミナルから監視したいので、以下のようなteeコマンドを使いました。

python client.py | tee logfile

を実行しましたが、ターミナルからもログファイルからも何も出てきません。 pythonスクリプトは正常に動作しています。 ここで何が起こっているのでしょうか? 何か見落としているのでしょうか?

何かアドバイスをいただけると幸いです。 よろしくお願いします。

どのように解決するのですか?

から man python :

   -u     Force stdin, stdout and stderr to  be  totally  unbuffered.   On  systems
          where it matters, also put stdin, stdout and stderr in binary mode.  Note
          that there is internal buffering in xreadlines(), readlines()  and  file-
          object  iterators  ("for  line  in sys.stdin") which is not influenced by
          this option.  To work around this, you will want to use  "sys.stdin.read‐
          line()" inside a "while 1:" loop.

ということで、できることは

/usr/bin/python -u client.py >> logfile 2>&1

あるいは tee :

python -u client.py | tee logfile