私はargparseモジュールのドキュメントを調べていますが、ドキュメントで説明したのと同じ結果を得る方法を理解できません。コマンドラインで引数を指定するか、parse_args()で指定してテストに役立てることができます。次に例を示します。argparseに引数を渡す方法がわかりません
ここドキュメントから直接であるparser = argparse.ArgumentParser()
parser.add_argument('--foo')
parser.parse_args('--foo 1'.split())
:
https://docs.python.org/3.6/library/argparse.html#action
それは、この出力になっている:
Namespace(foo='1')
しかし、これは私が得るものです:
Namespace(foo=None)
私はまた、次のことを試してみました:
parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_true')
parser.add_argument('--bar', action='store_false')
parser.add_argument('--baz', action='store_false')
parser.parse_args(['--foo', '--bar'])
そして、その一つは、これを出力します
Namespace(bar=True, baz=True, foo=False)
行うことになっているものです。誰が私にここで起こっていることを教えてもらえますか?ここで私は上記のコードの両方のスニペット用の出力を生成するために使用される私の完全なコードは次のとおりです。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
parser.parse_args('--foo 1'.split())
args = parser.parse_args()
print(args)
#supposed to be Namespace(foo='1')
parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_true')
parser.add_argument('--bar', action='store_false')
parser.add_argument('--baz', action='store_false')
parser.parse_args(['--foo', '--bar'])
args = parser.parse_args()
print(args)
#supposed to be Namespace(foo=True, bar=False, baz=True)
それが違いを作る場合、私は知りませんが、私はスパイダー3.1.4でこれをやっていると、私は、それらが出力を表示するには、コマンドライン引数を設定することから得た方法私は知りませんでしたドキュメントにいくつかのあいまいさへのPython 3.6.0
UPDATE
を実行していますよ。 @ hpauljの助けを借りて、私がしていたのは、指定されたカスタムコマンドラインの代わりにarg.sysvに関連する出力を表示することでした。
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
#added this assignment to args
args = parser.parse_args('--foo 1'.split())
#following line was wrong - removing
#args = parser.parse_args()
print(args)
#supposed to be Namespace(foo='1')
parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_true')
parser.add_argument('--bar', action='store_false')
parser.add_argument('--baz', action='store_false')
#added this assignment to args
args = parser.parse_args(['--foo', '--bar'])
#following line was wrong - removing
#args = parser.parse_args()
print(args)
#supposed to be Namespace(foo=True, bar=False, baz=True)
'args = parser.parse_args( '...'。split)'を使用してください。 'args = parser.parse_args()'はテストケースではなく、コマンドラインを解析します。 – hpaulj
オハイオ州.....私はあなたが何を意味するか見てみましょう。 – Mike
私はparse_args(...)を呼び出していましたので、もう一度呼び出すだけです。ドキュメントは実際に出力する方法を教えてくれないので混乱します。名前空間の価値を伝えるだけです。私は訂正されたバージョンで質問を更新します。ありがとう!! – Mike