[解決済み] スクリプトに --verbose または -v オプションを実装するには?
質問
は知っています。
--verbose
または
-v
をいくつかのツールから取得し、これを自分のスクリプトやツールに実装してみたいと思っています。
配置を考えました。
if verbose:
print ...
を私のソースコードに通すことで、もしユーザーが
-v
オプションを指定すると、変数
verbose
に設定されます。
True
と表示され、テキストが印刷されます。
この方法が正しいのか、それとももっと一般的な方法があるのでしょうか?
追加です。私は引数の解析の実装方法を求めているのではありません。それがどのように行われるかは知っています。私はverboseオプションにのみ特別な興味を持っています。
どのように解決するのですか?
私の提案は、関数を使うことです。しかし、むしろ
if
を使いたくなるかもしれませんが、このようにします。
if verbose:
def verboseprint(*args):
# Print each argument separately so caller doesn't need to
# stuff everything to be printed into a single string
for arg in args:
print arg,
print
else:
verboseprint = lambda *a: None # do-nothing function
(そうです、関数を
if
ステートメントで、その条件が真のときだけ定義されます!)
Python 3を使用している場合、ここで
print
はすでに関数である(もしくは
print
を使って2.xで関数として
from __future__ import print_function
) は、さらにシンプルになりました。
verboseprint = print if verbose else lambda *a, **k: None
この方法では、冗長モードがオフの場合は何もしない(ラムダを使う)関数として定義され、常に
verbose
のフラグを立てます。
ユーザーが冗長性モードを変更できた場合
実行中に
を使用する場合、これは間違った方法です。
if
が、コマンドラインフラグで設定するため、判断は一度だけでよいのです。
その上で、例えば
verboseprint("look at all my verbosity!", object(), 3)
を表示させたい場合は、常にquot;verbose"メッセージを表示させます。
関連
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python カメの描画コマンドとその例
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] Pythonスクリプトのプロファイリングはどのように行うのですか?
-
[解決済み] スクリプトを終了させるには?
-
[解決済み] セレクトボックスのオプションをすべて削除してから、オプションを1つ追加して、jQueryで選択するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PicgoのイメージベッドツールをPythonで実装する
-
Python jiabaライブラリの使用方法について説明
-
python implement mysql add delete check change サンプルコード
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み] データ型が理解できない
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")