2017-03-29 11 views
0

長い引数リスト(> 20引数)を持つPythonプログラムを実行します。引数にはすべてデフォルト値があります(ユーザによって上書きされない場合)。プログラムの起動時に、プログラムがどのように起動されたかのトレースを得るために有効な引数を出力します。今日、ダムルーチンを使用して印刷します。有効な引数を表示する

def print_config(args): 
    print("Configuration:") 
    print(" shoes: {}".format(args.shoes)) 
    print(" socket: {}".format(args.socket)) 
    [...] 

スマートイテレータを使用してこれを印刷するにはどうすればよいですか?

+1

'argpse'の' Namespace'オブジェクトから辞書を作る方法についてはhttp://stackoverflow.com/q/16878315/3901060を参照してください。その後、それを反復することができます。 – FamousJameous

答えて

1

argsは、argparse.Namespaceオブジェクトです。そのクラス、またはむしろそのsuperreprメソッドを持っています。 「あなたが参加している場合

arg_strings = [] 
    for name, value in sorted(self.__dict__.items()): 
     arg_strings.append('%s=%r' % (name, value)) 
    return '%s(%s)' % (type_name, ', '.join(arg_strings)) 

「\ n」の代わりに:それはあなたが(あなたがargparse.pyファイルで見つけることができます)repr

print(args) 

関連する行されている操作を行うときに見るものです、 'それはあなたのバージョンに近いものを与えます。

vars(args)は、args.__dict__.items()と同じ辞書です。

print(parser.parse_args([]))は、ユーザーの入力なしですべての既定値を表示します。もちろん、必要な入力がある場合は動作しません。

関連する問題