# How do I access command line arguments in Python?

## The Question :

397 people think this question is useful

I use python to create my project settings setup, but I need help getting the command line arguments.

I tried this on the terminal:

$python myfile.py var1 var2 var3  In my Python file, I want to use all variables that are input. The Question Comments : ## The Answer 1 543 people think this answer is useful import sys print(sys.argv)  More specifically, if you run python example.py one two three: >>> import sys >>> print(sys.argv) ['example.py', 'one', 'two', 'three']  ## The Answer 2 130 people think this answer is useful import sys sys.argv[1:]  will give you a list of arguments (not including the name of the python file) ## The Answer 3 109 people think this answer is useful I highly recommend argparse which comes with Python 2.7 and later. The argparse module reduces boiler plate code and makes your code more robust, because the module handles all standard use cases (including subcommands), generates the help and usage for you, checks and sanitize the user input – all stuff you have to worry about when you are using sys.argv approach. And it is for free (built-in). Here a small example: import argparse parser = argparse.ArgumentParser("simple_example") parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int) args = parser.parse_args() print(args.counter + 1)  and the output for python prog.py -h usage: simple_example [-h] counter positional arguments: counter counter will be increased by 1 and printed. optional arguments: -h, --help show this help message and exit  and for python prog.py 1 as you would expect: 2  ## The Answer 4 60 people think this answer is useful Python code: import sys # main param_1= sys.argv[1] param_2= sys.argv[2] param_3= sys.argv[3] print 'Params=', param_1, param_2, param_3  Invocation: $python myfile.py var1 var2 var3



Output:

Params= var1 var2 var3



25 people think this answer is useful

You can use sys.argv to get the arguments as a list.

If you need to access individual elements, you can use

sys.argv[i]



where i is index, 0 will give you the python filename being executed. Any index after that are the arguments passed.

5 people think this answer is useful

If you call it like this: $python myfile.py var1 var2 var3 import sys var1 = sys.argv[1] var2 = sys.argv[2] var3 = sys.argv[3]  Similar to arrays you also have sys.argv[0] which is always the current working directory. ## The Answer 7 5 people think this answer is useful Some additional things that I can think of. As @allsyed said sys.argv gives a list of components (including program name), so if you want to know the number of elements passed through command line you can use len() to determine it. Based on this, you can design exception/error messages if user didn’t pass specific number of parameters. Also if you looking for a better way to handle command line arguments, I would suggest you look at https://docs.python.org/2/howto/argparse.html ## The Answer 8 2 people think this answer is useful First, You will need to import sys sys – System-specific parameters and functions This module provides access to certain variables used and maintained by the interpreter, and to functions that interact strongly with the interpreter. This module is still available. I will edit this post in case this module is not working anymore. And then, you can print the numbers of arguments or what you want here, the list of arguments. Follow the script below : #!/usr/bin/python import sys print 'Number of arguments entered :' len(sys.argv) print 'Your argument list :' str(sys.argv)  Then, run your python script : $ python arguments_List.py chocolate milk hot_Chocolate



And you will have the result that you were asking :

Number of arguments entered : 4
Your argument list : ['arguments_List.py', 'chocolate', 'milk', 'hot_Chocolate']



Hope that helped someone.