web-dev-qa-db-ja.com

argparseでコマンドライン引数を出力しますか?

コマンドライン引数を解析するためにargparseを使用しています。

デバッグを支援するために、Pythonスクリプトで呼び出された引数を含む行をprintしたいと思います。argparse内でこれを行う簡単な方法はありますか?

25
becko

ArgumentParser.parse_args は、デフォルトで sys.argv 。そのため、その動作を変更しない場合(何か他のものをparse_args)、単に印刷することができますsys.argvは、Pythonスクリプトに渡されるすべての引数を取得します。

import sys
print(sys.argv)

または、parse_argsが戻ります。そのようにして、引数パーサーがそれらを解釈した方法ですべての値を取得します。

args = parser.parse_args()
print(args)
23
poke

テスト中など、argparse in another another python scriptを実行している場合 nittest 内にある場合、sys.argvは、メインスクリプトの引数、たとえば:

['C:\ Eclipse\plugins\org.python.pydev_5.9.2.201708151115\pysrc\runfiles.py'、 'C​​:\ Eclipse_workspace\test_file_search.py​​'、 '-port'、 '58454'、 '-詳細」、「0」]

この場合、 vars を使用してargparse argsを反復処理する必要があります。

parser = argparse.ArgumentParser(...
...
args = parser.parse_args()
for arg in vars(args):
    print arg, getattr(args, arg)

おかげで: https://stackoverflow.com/a/27181165/658497

12
Noam Manos