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

时间:2015-01-15 13:06:06

标签: python python-2.7 argparse

有点陷入困境。我需要检查在执行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是否已通过。如果参数中有触发器,则获取触发器的值并打印它。

该脚本应该能够使用以下所有命令运行

没有触发器参数的

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,以便它可以处理任意数量的传递参数。

2 个答案:

答案 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