python 2.7 检查参数是否已从命令提示符传递

python 2.7 check if argument has been passed from command prompt

有点陷入困境。我需要检查在执行 python 脚本时是否通过命令提示符传递了某个参数。

我将 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 是否已通过。如果参数中有 trigger 则获取 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,以便它可以处理任意数量的传递参数。

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

向您的解析器添加一个 --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 也应该有效。 If 将抓取 --trigger 之后的所有内容,无论它是否看起来像标志 ('--')。如果您将字符串传递给另一个程序,这会很方便。请参阅文档中的示例

parse_known_args 如果你想现在解析一些字符串,稍后再处理其余的,这也很方便。同样,这在文档中。

带有 nargs='*' 的位置参数也很方便。输入字符串中的 '--' 有助于将应解析的字符串与应查看的简单参数字符串分开。