2

通常はcronが不足しているPythonスクリプトがあります。時々、私はそれを(Unix)シェルで自分で実行したいのですが、そうであれば、ログファイルに書き込むのではなく、出力を端末に書き込んでもらいます。

スクリプトがcronを使い果たしているのか、インタラクティブシェル(つまり、Pythonシェルではなくbash、kshなど)で実行されているのかを判断するPythonの方法は何ですか?

おそらくTERM環境変数の存在を確認できますか?それは理にかなっていますが、一見シンプルに見えます...

os.isattyはどういうわけか使用できますか?

違いがあれば、Python2.6を使用しています。ありがとう!

4

2 に答える 2

3

stdoutが端末に接続されているかどうかを確認できます。

import sys
sys.stdout.isatty()

でそれを行うことができますがos.isatty、それにはファイル記述子が必要です。これはそれほど単純ではありません。

import os
os.isatty(sys.stdout.fileno())
于 2013-02-27T20:15:07.257 に答える
2

本当にこれをチェックする必要がある場合、Pavel Anossovの答えはそれを行う方法であり、それはあなたの最初の推測とほとんど同じです。

しかし、本当にこれをチェックする必要がありますか?に書き込みを行うPythonスクリプトを記述して、ログファイルにリダイレクトできるようにしないのはstdoutなぜstderrですかcron

または、さらに良いことに、loggingモジュールを使用して、それを書き込みsyslogまたはその他の適切なものにさせ、ターミナルがある場合はそれにも書き込みますか?

于 2013-02-27T20:22:14.937 に答える