How to check if an argument from commandline has been set?
PythonPython Problem Overview
I can call my script like this:
python D:\myscript.py 60
And 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!!!"
Python Solutions
Solution 1 - Python
import sys
len( sys.argv ) > 1
Solution 2 - Python
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()
Solution 3 - Python
if len(sys.argv) < 2:
print "You must set argument!!!"
Solution 4 - Python
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.
Solution 5 - Python
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.
Solution 6 - Python
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
Solution 7 - Python
This script uses the IndexError
exception:
try:
print(sys.argv[1])
except IndexError:
print("Empty argument")
Solution 8 - Python
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
Solution 9 - Python
if(sys.argv[1]):
should work fine, if there are no arguments sys.argv[1] will be (should be) null