回答:
以下のように示されている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。