2016-09-06 12 views
0

私は、テキストファイルからデータを解析してプロットするためのPythonスクリプトを用意しています。引数の処理はargparseモジュールで行われます。問題は、いくつかの引数がオプションであることです。そのうちの1つは、プロットにテキスト注釈を追加するために使用されます。この引数は、** kwargsを介してプロット関数に送られます。私の質問は - これらのオプションの引数を処理する最もpythonicな方法は何ですか?いくつかの疑似コードはここにあります:Python argaprseオプション引数の処理

parser = argparse.ArgumentParser() 
... 
parser.add_argument("-o", "--options", nargs="+", help="additional options") 
args = parser.parse_args() 
... 
def some_function(arguments, **kwargs): 
    doing something with kwargs['options'] 
    return something 
... 
arguments = ... 
some_function(arguments, options=args.options) 

デフォルトではオプションが指定されていない場合は、値は割り当てられません。そしてそれはいくつかの問題を引き起こす。より多くのpythonicは何か - 何らかの形でsome_function内の 'options'をチェックしますか?あるいはsome_functionが呼び出される前に引数を解析するかもしれませんか?

+0

場合、キーが辞書

def some_function(arguments, **kwargs): something = kwargs.get('options', 'Not found') return something 

またはANに見つからない場合、デフォルト値を設定します引数を 'kwargs'に入れるか、あるいは渡すことができるような入力のような辞書を受け入れます。あなたの 'options'引数は単に文字列のリストを生成します。 – hpaulj

+0

'argpse'を' kwargs'と併用すると:http://stackoverflow.com/questions/33712615/using-argparse-with-function-that-takes-kwargs-argument – hpaulj

答えて

3

デフォルトとして明示的に空のリストを指定することができます。

parser.add_argument("-o", "--options", nargs="+", default=[]) 
1

使用getと `argparse`の変換について他のSOの質問があります声明

if 'option' in kwargs: 
    pass # do something 
関連する問題