Command line inputs in python

Python Command Line Arguments – 3 Ways to Read/Parse

Python command-line arguments are the parameters provided to the script while executing it. The command-line arguments are used to provide specific inputs to the program.

What is the benefit of Python Command Line Arguments?

Python command-line arguments help us to keep our program generic in nature. For example, we can write a program to process a CSV file. If we pass the CSV file name from the command-line, then our program will work for any CSV file. This will make our program loosely coupled and it will be easy to maintain it.

Another benefit of command-line arguments is the additional security that comes with it. Let’s say we have a program to save data into the database. If we store the database credentials in the script or some configuration file, it can be accessed and executed by anyone having access to the files. But, if the user/password is provided as a command-line argument, then it’s not present in the file system and our program is more secured.

Читайте также:  Терминальные операции со стримом java

How to Pass Command-line Arguments in Python?

If you are running the python script from the terminal, just pass the arguments after the script name. The arguments are separated with white space characters.

$ python script.py arg1 arg2 . argN

Passing Command-line arguments in PyCharm

PyCharm is the most popular IDE for Python programming. If you want to pass command-line arguments to a python program, go to “Run > Edit Configurations” and set the Parameters value and save it.

Python Command Line Arguments PyCharm

How to Read Command-line arguments in Python Script?

There are three popular modules to read and parse command-line arguments in the Python script.

1. Reading Python Command-line arguments using the sys module

The command-line arguments are stored in the sys module argv variable, which is a list of strings. We can read the command-line arguments from this list and use it in our program.

Note that the script name is also part of the command-line arguments in the sys.argv variable.

import sys if len(sys.argv) != 2: raise ValueError('Please provide email-id to send the email.') print(f'Script Name is ') email = sys.argv[1] print(f'Sending test email to ')
$ python3.7 command-line-args.py [email protected] Script Name is command-line-args.py Sending test email to [email protected] $ python3.7 command-line-args.py Traceback (most recent call last): File "command-line-args.py", line 4, in raise ValueError('Please provide email-id to send the email.') ValueError: Please provide email-id to send the email. $

2. Parsing Command-line arguments using the getopt module

Python getopt module works in a similar way as the Unix getopt() function. This module is helpful when you want the script to accept options and their values, similar to the many Unix commands.

This module works in conjunction with the sys.argv to parse the command-line arguments and extract the options values in a list of tuples.

import getopt import sys argv = sys.argv[1:] opts, args = getopt.getopt(argv, 'x:y:') # list of options tuple (opt, value) print(f'Options Tuple is ') # list of remaining command-line arguments print(f'Additional Command-line arguments list is ')
$ python3.7 command-line-args.py -x 1 -y 2 A B Options Tuple is [('-x', '1'), ('-y', '2')] Additional Command-line arguments list is ['A', 'B'] $

3. Parsing Command-line arguments using argparse module

We can use Python argparse module also to parse command-line arguments. There are a lot of options with argparse module.

  • positional arguments
  • the help message
  • the default value for arguments
  • specifying the data type of argument and many more.
import argparse # create parser parser = argparse.ArgumentParser() # add arguments to the parser parser.add_argument("language") parser.add_argument("name") # parse the arguments args = parser.parse_args() # get the arguments value if args.language == 'Python': print("I love Python too") else: print("Learn Python, you will like it") print(f'Hello , this was a simple introduction to argparse module')
$ python3.7 command-line-args.py Python David I love Python too Hello David, this was a simple introduction to argparse module $ $ python3.7 command-line-args.py Java Lisa Learn Python, you will like it Hello Lisa, this was a simple introduction to argparse module $ $ python3.7 command-line-args.py -h usage: command-line-args.py [-h] language name positional arguments: language name optional arguments: -h, --help show this help message and exit $

Notice that the help message is automatically generated by the argparse module.

Conclusion

If your script requires simple command-line arguments, you can go with sys.argv. But, if your program accepts a lot of positional arguments, default argument values, help messages, etc, then you should use argparse module. The getopt module works too but it’s confusing and hard to understand.

Источник

Python Command Line Arguments

Python Command Line Arguments

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

Python Command line arguments are input parameters passed to the script when executing them. Almost all programming language provide support for command line arguments. Then we also have command line options to set some specific options for the program.

Python Command Line Arguments

Let’s look through simple program to learn how to read and use python command line arguments.

Python sys module

Python sys module stores the command line arguments into a list, we can access it using sys.argv . This is very useful and simple way to read command line arguments as String. Let’s look at a simple example to read and print command line arguments using python sys module.

import sys print(type(sys.argv)) print('The command line arguments are:') for i in sys.argv: print(i) 

read python command line argument using sys.argv

Below image illustrates the output of a sample run of above program. There are many other useful functions in sys module, read them in detail at python sys module.

Python getopt module

Python getopt module is very similar in working as the C getopt() function for parsing command-line parameters. Python getopt module is useful in parsing command line arguments where we want user to enter some options too. Let’s look at a simple example to understand this.

import getopt import sys argv = sys.argv[1:] try: opts, args = getopt.getopt(argv, 'hm:d', ['help', 'my_file=']) print(opts) print(args) except getopt.GetoptError: # Print a message or do something useful print('Something went wrong!') sys.exit(2) 

parse command line argument in python using getopt module

Above example is very simple, but we can easily extend it to do various things. For example, if help option is passed then print some user friendly message and exit. Here getopt module will automatically parse the option value and map them. Below image shows a sample run. To learn more, read python getopt module.

Python argparse module

Python argparse module is the preferred way to parse command line arguments. It provides a lot of option such as positional arguments, default value for arguments, help message, specifying data type of argument etc. At the very simplest form, we can use it like below.

import argparse parser = argparse.ArgumentParser() parser.parse_args() 

python command line arguments using argparse module

Below is the output from quick run of above script. Python argparse module provide a lot many features, you should read about them at python argparse tutorial for clear understanding. That’s all for different options to read and parse command line arguments in python, you should decide which is the one for your specific requirements and then use it. References:

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Источник

Оцените статью