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

时间:2010-11-15 20:24:30

标签: python

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

python D:\myscript.py 60

在脚本中,我可以做到:

arg = sys.argv[1]
foo(arg)

但是我如何测试参数是否已在命令行调用中输入?我需要做这样的事情:

if isset(sys.argv[1]):
    foo(sys.argv[1])
else:
    print "You must set argument!!!"

8 个答案:

答案 0 :(得分:43)

不要使用sys.argv来处理命令行界面;有一个模块可以做到这一点:argparse

您可以将required=True传递给add_argument

,根据需要标记参数
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("foo", ..., required=True)
parser.parse_args()

答案 1 :(得分:40)

len(sys.argv) > 1

答案 2 :(得分:22)

if len(sys.argv) < 2:
    print "You must set argument!!!"

答案 3 :(得分:6)

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

答案 4 :(得分:3)

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

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

答案 5 :(得分:2)

for arg in sys.argv:
    print (arg)  
    #print cli arguments

您可以使用它将参数存储在列表中并使用它们。比使用它们更安全的方式sys.argv[n]

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

答案 6 :(得分:0)

我使用optparse module但是我想因为我使用的是2.5你可以使用argparse,如果你使用2.7或更高版本的Alex建议

答案 7 :(得分:-7)

if(sys.argv[1]):应该可以正常工作,如果没有参数,sys.argv [1]将(应该)为null