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

Python

Python 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRichard KnopView Question on Stackoverflow
Solution 1 - PythonkhachikView Answer on Stackoverflow
Solution 2 - PythonKatrielView Answer on Stackoverflow
Solution 3 - PythonchrisView Answer on Stackoverflow
Solution 4 - PythonMiguel ArmentaView Answer on Stackoverflow
Solution 5 - PythonDNSView Answer on Stackoverflow
Solution 6 - PythonValentinos IoannouView Answer on Stackoverflow
Solution 7 - PythonEnrique Pérez HerreroView Answer on Stackoverflow
Solution 8 - PythonRafiView Answer on Stackoverflow
Solution 9 - PythonJ VView Answer on Stackoverflow