Python スクリプトに冗長オプションを追加したいのですが、最適な方法がわかりません。私の main() 関数は parse_cmdline() 関数を呼び出し、次に process() 関数を呼び出します。詳細オプションの関数を作成したいと考えています。verbose 関数をどこで定義すればよいかわかりません。parse_cmdline() から process() 関数に冗長オプションを渡す必要がありますか? これについて最善の方法を探しています。
4 に答える
ロギング
基本的に、必要な冗長性に応じて出力を除外するには、ロギング モジュールが必要です。つまり、すべての出力メッセージに重大度レベル (debug
または などwarning
) が与えられ、表示するメッセージの最小重大度レベルを決定できます。
解析された引数を使用して、必要な重大度レベルを決定するだけです (基本的に、最小重大度レベルが高いほど、プログラムは冗長ではなくなります)。
ログブック
logbook
私は素晴らしいモジュールしかお勧めできません 。handler
ログlevel
が必要最小限の重要度に設定されているを使用すると、問題を簡単に解決できます (例: 表示のみnotice
以上...)。
print
次に、スクリプト内の への呼び出しをログ記録呼び出し logbook.debug
、などに置き換える必要がありますlogbook.info
。
には、より高度な機能が多数ありlogbook
ます。ドキュメントを自由に参照してください。
logbook
デフォルトでは、 は を登録StderrHandler
してアプリケーションにプッシュしますが、 で簡単に元に戻すことができることに注意してくださいlogbook.default_handler.pop_application()
。
ドキュメントで提案されているように、他の解決策があります。
あなたはarghを調べましたか?
最初のインポート
import argh
次に、このようなものを使用してオプションを追加します
@argh.arg('--verbose', default=False, help='Be more verbose')
オプションを解析し、argparser
それらを渡すか、global
global
値を読み取るだけの場合ではなく、グローバル スコープ内の名前に割り当てたい場合にのみキーワードを使用する必要があることに注意してください。
をご覧くださいplac
。argparse
私の意見では、これはコマンドライン解析用の素晴らしいパッケージであり、ビルトインよりもはるかに直感的です。