How to check if an argument from commandline has been set?
Question:
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!!!"
Answers:
if(sys.argv[1]):
should work fine, if there are no arguments sys.argv[1] will be (should be) null
import sys
len( sys.argv ) > 1
if len(sys.argv) < 2:
print "You must set argument!!!"
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()
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
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
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.
This script uses the IndexError
exception:
try:
print(sys.argv[1])
except IndexError:
print("Empty argument")
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!!!"
if(sys.argv[1]):
should work fine, if there are no arguments sys.argv[1] will be (should be) null
import sys
len( sys.argv ) > 1
if len(sys.argv) < 2:
print "You must set argument!!!"
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()
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
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
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.
This script uses the IndexError
exception:
try:
print(sys.argv[1])
except IndexError:
print("Empty argument")