我已经看到有关使用 argparse 库将字典和列表传递给 Python 的问题。这些示例都显示了我的 Python 代码的样子。但是没有人告诉我它们在命令行上的样子。我在哪里需要大括号、方括号和引号?
因此,如果我想要参数 --my_dict 和 --my_list 我将如何将它们指定为从命令行调用?
这是我想要完成的事情的本质:
Python foo.py --my_dict="{'Name': 'Zara', 'Class': 'First'}" --my_list="['a', 'b', 'c']"
Run Code Online (Sandbox Code Playgroud)
您可以使用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)
Run Code Online (Sandbox Code Playgroud)
跑步
% python script.py --my_dict="{'Name': 'Zara', 'Class': 'First'}" --my_list="['a', 'b', 'c']"
Run Code Online (Sandbox Code Playgroud)
产量
Namespace(my_dict={'Name': 'Zara', 'Class': 'First'}, my_list=['a', 'b', 'c'])
Run Code Online (Sandbox Code Playgroud)