2016-09-20 10 views
1

pythonスクリプトからすべての印刷情報をグローバルに抑制する簡単な方法はありますか?Pythonスクリプトからすべての印刷情報を隠すには?

私はデバッグ目的でスクリプトに多くの印刷情報を入れたシナリオがありますが、ユーザーが実行するとスクリプトがすべての情報を印刷しないようにします。

したがって、debug = 1などのコマンドライン引数を渡すときだけ、印刷する必要がある情報以外の情報を印刷する必要があります。

は、単純に好き試みた

if sys.argv[1]: 
    debug=1 
else: 
    debug=0 

if debug: 
    print "Enabled debugging" 

しかし、このために、私はどこでもコンディション場合を含める必要があり、代わりにシャットダウンする簡単な方法は、グローバルに印刷情報がありますか?あなたのコメントを共有してください。あなたはむしろどこでもprint文を書くよりもビルトインloggingライブラリを使うべき理由

おかげ

+3

ロギングモジュールの使用を検討する必要があります。 –

答えて

4

はこれがあります。

これで、必要に応じてlogger.debug()を呼び出して、アプリケーションレベルでデバッグログが実際に出力されるかどうかを設定できます。

+0

これは良いアプローチですが、ここでは回答しません。 – Jan

+0

logging.debug( "私はデバッグオプションを使用しています")を使用すると、コマンドラインから冗長性をどのように制御できますか? – Vimo

+0

ログのチュートリアルがたくさんあるので、参照する必要があります。 –

5

標準出力を/ dev/nullにリダイレクトする必要があります。 以下はOSに依存しない方法です。

import os 
import sys 
f = open(os.devnull, 'w') 
sys.stdout = f 
+0

何が起こっているのか説明したいかもしれません。 – MooingRawr

関連する問題