我将python文件作为python run.py -ip 127.0.0.1 -trigger 1
在我的python脚本中,我使用argparse
作为
parser = argparse.ArgumentParser()
parser.add_argument('-ip', '--ip')
args = parser.parse_args()
如何检查参数trigger
是否已通过。如果参数中有触发器,则获取触发器的值并打印它。
该脚本应该能够使用以下所有命令运行
没有触发器参数的 python run.py -ip 127.0.0.1
。
python run.py -ip 127.0.0.1 -trigger
没有触发参数的值。
python run.py -ip 127.0.0.1 -trigger 1
包含所有参数及其值。
此外,执行命令是从自动系统自动生成的,因此参数可以更多,例如,命令可以是python run.py -ip 127.0.0.1 -trigger 1 prompt 0 base 5 .....
,-trigger 1 prompt 0 base 5
等是自动生成的,因此我想在我的python脚本中实现parameter check
,以便它可以处理任意数量的传递参数。
答案 0 :(得分:3)
向解析器添加--trigger
参数
parser = argparse.ArgumentParser()
parser.add_argument('-ip', '--ip')
parser.add_argument('-t','--trigger', nargs='*')
args = parser.parse_args()
如果缺少--trigger
,则args.trigger
应为默认值(例如None
)
如果没有参数,args.trigger
将是[]
,空列表
否则它将是后面所有字符串的列表。从技术上讲,这也适用于[]案例。
使用nargs='?'
,可以定义const
,但是您只能给它一个参数。
nargs=argparse.REMAINDER
也应该有效。如果将在--trigger
之后抓取所有内容,是否看起来像是一个标志(' - ')。如果您将字符串传递给另一个程序,这可能很方便。请参阅文档中的示例
parse_known_args
也很方便。再次,这是在文档中。
nargs='*'
的位置参数也很方便。输入字符串中的'--'
对于分离应该从应该被视为简单参数字符串的字符串中分离的字符串非常有用。
答案 1 :(得分:-1)
argparse的最小示例,但您应该阅读tutorial:
#!/usr/bin/python
import argparse
parser = argparse.ArgumentParser(description='Check for trigger')
parser.add_argument('-trigger', help='trigger value')
args = parser.parse_args()
if args.trigger is not None:
print("trigger value: {}".format(args.trigger))
你得到了输出:
○ → ./trigger.py
○ → ./trigger.py -trigger=
trigger value:
○ → ./trigger.py -trigger 1
trigger value: 1