2017-05-24 13 views
0

私は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) 
+1

'args = parser.parse_args( '...'。split)'を使用してください。 'args = parser.parse_args()'はテストケースではなく、コマンドラインを解析します。 – hpaulj

+0

オハイオ州.....私はあなたが何を意味するか見てみましょう。 – Mike

+0

私はparse_args(...)を呼び出していましたので、もう一度呼び出すだけです。ドキュメントは実際に出力する方法を教えてくれないので混乱します。名前空間の価値を伝えるだけです。私は訂正されたバージョンで質問を更新します。ありがとう!! – Mike

答えて

0
import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument('--foo') 
args = parser.parse_args('--foo 1'.split()) 
print(args) 

これはあなたの答えを与える:ここでは修正されたコードです。あなたはなぜそれが与えられたのかを再度解析しようとしています。

+0

うん、@ hpauljは上記と同じだと私はそれに応じて私の質問を更新した。ありがとう! – Mike

+0

あなたの答えが最初に来たのでしょうか?申し訳ありませんが私はそれを逃した! – Mike

関連する問題