我已经看到了有关使用argparse库将字典和列表传递给Python的问题。这些示例都显示了我的Python代码的样子。但是没有人告诉我它们在命令行上是什么样子。我在哪里需要大括号,方括号和引号?
因此,如果我想要参数--my_dict和--my_list,如何在命令行中指定它们?
这是我想要完成的工作的本质:
Python foo.py --my_dict="{'Name': 'Zara', 'Class': 'First'}" --my_list="['a', 'b', 'c']"
答案 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'])