繁体   English   中英

使用python argparse解析参数

[英]Parsing arguments with python argparse

我找不到所需的示例来解析参数。 其中带有:的名称是已知列表(它们中的30个),它们后面的值可能有也可能没有值,但是有些是必需的。

creatAlert.py call_type: I alert_id: 25 message: STATUS OF AGENT PLATFORM notes:

因此,我试图仅解析call_type: I没有运气。 'I'call_type变量中得到'I'call_type什么?

parser = argparse.ArgumentParser()
parser.add_argument("call_type:", type=str, help="Testing")
args = parser.parse_args()
print args.call_type

是否需要特殊技巧来处理带有空格的message参数?

argparse期望与提供的格式不同。 如果您的上游应用程序未遵循argparse约定,则argparse将无法轻松工作。

相反,我建议您将整个输入行作为字符串。 搜索冒号并将这些单词的行分隔开,将结果值放入字典中。 蛮力就很容易(足够)了。

  • 查找带有冒号的第一个单词; 使该字典键
  • 将单词连接到该键的值中,直到您按下EOL或下一个冒号为止。

import sys
print(sys.argv)

2328:~/mypy$ python3 stack51195799.py call_type: I alert_id: 25 message: STATUS OF AGENT PLATFORM notes:
['stack51195799.py', 'call_type:', 'I', 'alert_id:', '25', 'message:', 'STATUS', 'OF', 'AGENT', 'PLATFORM', 'notes:']

argparse尝试解析argv[1:] ,在这种情况下为10个字符串的列表。 “:”对shell(用于分割命令行)或解析器没有任何特殊含义。

如果直接解析该列表,则必须使用该列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM