Summary: In this tutorial, we will learn what is sys.argv in Python, what are its significances and how can we use it in our Python program.
Most of the time we execute Python scripts directly from the command line. But sometimes, we may also need to pass arguments to those scripts directly from the command line.
In such cases,
sys.argv comes handy.
sys.argv is a list object which is available in the Python’s
sys module. It stores all the command-line arguments passed to a Python script as string objects.
The arguments that we pass from the command line are stored as strings in the
sys.argv list, provided the name of the file occupies the first place.
Consider, that we have a python script named myscript.py and we want to pass four different arguments to it.
In that case, we would run the command as follows and the
sys.argv list will have those arguments stored in it.
>>> Python myscript.py arg1 arg2 arg3 arg4
How to use sys.argv?
sys.argv, we first have to import the
sys module in our Python program.
Then, using the indexing operator
sys.argv, we can access the command-line arguments.
Tip: Always check the number of arguments passed using
len(sys.argv)before accessing them in the program.
#myscript.py import sys count = len(sys.argv) print("Number of arguments:", count) for arg in sys.argv: print(arg)
Run the script:
>>> Python myscript.py one two three four Number of arguments: 5 myscript.py one two three four
As you can see, the name of the file is stored in the 0th index of the list followed by the arguments in the same order as they were passed on the command line.
However, it is important to note that
sys.argv doesn’t preserve the type of arguments.
Whether we pass integer or floating numbers, all arguments are stores as strings in the
#myscript.py import sys count = len(sys.argv) print("Number of arguments:", count) for arg in sys.argv: print(type(arg))
Run the script to know the types of each argument:
>>> Python myscript.py one two 3 4 Number of arguments: 5 <class 'str'> <class 'str'> <class 'str'> <class 'str'> <class 'str'>
sys.argv is a simple Python list object available in the
sys module that stores the command line arguments as strings.