开发者

How to check if an argument from commandline has been set?

I can call my script like this:

python D:\myscript.py 60

A开发者_高级运维nd in the script I can do:

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

But how could I test if the argument has been entered in the command line call? I need to do something like this:

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


import sys
len( sys.argv ) > 1


Don't use sys.argv for handling the command-line interface; there's a module to do that: argparse.

You can mark an argument as required by passing required=True to add_argument.

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


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


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

This will check if any arguments were passed at all. If there are no arguments, it will exit the script, without running the rest of it.


If you're using Python 2.7/3.2, use the argparse module. Otherwise, use the optparse module. The module takes care of parsing the command-line, and you can check whether the number of positional arguments matches what you expect.


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

You can use it to store the argument in list and used them. Is more safe way than to used them like this sys.argv[n]

No problems if no arguments are given


This script uses the IndexError exception:

try:
    print(sys.argv[1])
except IndexError:
    print("Empty argument")


I use optparse module for this but I guess because i am using 2.5 you can use argparse as Alex suggested if you are using 2.7 or greater


if(sys.argv[1]): should work fine, if there are no arguments sys.argv[1] will be (should be) null

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜