Python 如何检查命令行中的参数是否已设置?

Python 如何检查命令行中的参数是否已设置?,python,Python,我可以这样调用我的脚本: python D:\myscript.py 60 if isset(sys.argv[1]): foo(sys.argv[1]) else: print "You must set argument!!!" 在脚本中,我可以做到: arg = sys.argv[1] foo(arg) 但是如何测试参数是否已输入到命令行调用中?我需要这样做: python D:\myscript.py 60 if isset(sys.argv[1]): f

我可以这样调用我的脚本:

python D:\myscript.py 60
if isset(sys.argv[1]):
    foo(sys.argv[1])
else:
    print "You must set argument!!!"
在脚本中,我可以做到:

arg = sys.argv[1]
foo(arg)
但是如何测试参数是否已输入到命令行调用中?我需要这样做:

python D:\myscript.py 60
if isset(sys.argv[1]):
    foo(sys.argv[1])
else:
    print "You must set argument!!!"
if(sys.argv[1]):
应该可以正常工作,如果没有参数,sys.argv[1]将(应该)为空
if len(sys.argv) < 2:
    print "You must set argument!!!"
打印“您必须设置参数!!!”
不要使用
sys.argv
来处理命令行界面;有一个模块可以执行此操作:

通过将
required=True
传递到
add_argument
可以将参数标记为required

import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("foo", ..., required=True)
parser.parse_args()

如果您使用的是Python 2.7/3.2,请使用模块。否则,请使用模块。该模块负责解析命令行,您可以检查位置参数的数量是否与您期望的匹配。

我使用这个,但我想因为我使用的是2.5,如果您使用的是2.7或更高版本,您可以按照Alex的建议使用argparse

for arg in sys.argv:
    print (arg)  
    #print cli arguments
您可以使用它将参数存储在列表中并使用它们。比像这样使用它们更安全
sys.argv[n]

如果没有给出参数,就没有问题

if len(sys.argv) == 1:
   print('no arguments passed')
   sys.exit()

这将检查是否传递了任何参数。如果没有参数,它将退出脚本,而不运行脚本的其余部分。

检查argv[1]是否为null,抱歉,我认为这暗示了我在谈论参数1。@Jim
sys.argv
不是null,它至少包含脚本名为
sys.argv[0]
如果未设置该值,将给出一个列表索引越界错误。如果需要非常简单,它将与
索引器一起下降。使用
sys.argv
是否确实有问题?@Jonik,不一定,但很少有理由不使用它。正如正则表达式偶尔对解析HTML非常有用,但很少有理由不使用HTML解析器。-1提供了一个在Richard的情况下不起作用的示例。如果
foo
60
,那么它将是一个位置,您不能将
required=True
添加到位置。谢谢您的回答!请注意,已经有其他答案与此非常相似。