回答:
以下のように示されているargparse
ドキュメント:
オプションの引数アクションの場合、destの値は通常、オプション文字列から推測されます。ArgumentParserは、最初の長いオプション文字列を取り、によって、DESTの値を生成し、初期取り去っ
--
た文字列を。任意の内部-
の文字はに変換されます_
文字列が有効な属性名であることを確認します
したがって、を使用する必要がありますargs.pm_export
。
残念ながら、ダッシュからアンダースコアへの置換は、次の--
ような位置引数(接頭辞が付いていない)では機能しません。
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs-dir',
help='Directory with .log and .log.gz files')
parser.add_argument('results-csv', type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs-dir='./', results-csv=<open file 'lool.csv', mode 'w' at 0x9020650>)
したがって、最初の引数をadd_argument()
属性名として使用し、kwargを使用metavar
してヘルプでどのように表示するかを設定する必要があります。
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs_dir', metavar='logs-dir',
nargs=1,
help='Directory with .log and .log.gz files')
parser.add_argument('results_csv', metavar='results-csv',
nargs=1,
type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs_dir=['./'], results_csv=[<open file 'lool.csv', mode 'w' at 0xb71385f8>])
positional_arg = getattr( parser, 'positional-arg' )
metavar
ましたが、それが機能していない理由を理解できませんでした。ありがとう!
argparse
使用setattr
しているgetattr
ため、dest
名前は有効なdot
属性名である必要はありません。ユーザーはも使用できますgetattr
。