Python argparse通过命令行传递列表或字典

时间:2019-02-12 18:29:22

标签: python argparse

我已经看到了有关使用argparse库将字典和列表传递给Python的问题。这些示例都显示了我的Python代码的样子。但是没有人告诉我它们在命令行上是什么样子。我在哪里需要大括号,方括号和引号?

因此,如果我想要参数--my_dict和--my_list,如何在命令行中指定它们?

这是我想要完成的工作的本质:

Python foo.py --my_dict="{'Name': 'Zara', 'Class': 'First'}" --my_list="['a', 'b', 'c']"

1 个答案:

答案 0 :(得分:2)

您可以使用ast.literal_eval将用户输入的字符串安全地转换为Python字典和列表:

import argparse
import ast
parser = argparse.ArgumentParser()
parser.add_argument('--my_dict', type=ast.literal_eval)
parser.add_argument('--my_list', type=ast.literal_eval)
args = parser.parse_args()
print(args)

运行

% python script.py --my_dict="{'Name': 'Zara', 'Class': 'First'}" --my_list="['a', 'b', 'c']"

收益

Namespace(my_dict={'Name': 'Zara', 'Class': 'First'}, my_list=['a', 'b', 'c'])