57

type=dict の引数を argparse で受け入れようとしていますが、入力に関係なく、無効な dict 値のエラーが発生します。

#!/usr/bin/env python

import argparse

MYDICT = {'key': 'value'}

parser = argparse.ArgumentParser()
parser.add_argument("-m", "--mydict", action="store",
                    required=False, type=dict,
                    default=MYDICT)

args = parser.parse_args()

print args.mydict

これは、辞書をスクリプトに渡そうとするとどうなるかです

./argp.py -m "{'key1': 'value1'}"
usage: argp.py [-h] [-m MYDICT]
argp.py: error: argument -m/--mydict: invalid dict value: "{'key1': 'value1'}"

ドキュメントを見ると、これは可能だと思います。

http://docs.python.org/dev/library/argparse.html

「in 演算子をサポートする任意のオブジェクトをchoices 値として渡すことができるため、dict オブジェクト、set オブジェクト、カスタム コンテナーなどがすべてサポートされます。」</p>

4

1 に答える 1