54: Working with Command-Line Arguments in Python Using Argparse

Working with Command-Line Arguments in Python Using Argparse

Command-line arguments are a common way to provide inputs to your Python programs when running them from the terminal. They allow users to specify options and values that the program should use, offering flexibility and control over its behavior. In this blog post, we’ll explore how to handle command-line arguments using the argparse module in Python.

Introduction to Command-Line Arguments

When running a Python script from the terminal, you can pass additional parameters known as command-line arguments. These arguments can be short, single-character flags preceded by a dash (e.g., -h), or longer words preceded by two dashes (e.g., --help). These arguments can also take values, enabling you to specify filenames, input data, and other configurations.

Using Argparse

The argparse module in Python provides a convenient way to handle command-line arguments. It allows you to define the arguments your program expects, parse them, and use their values in your code. Here’s a step-by-step guide to using argparse:

Import Argparse and Create a Parser:

				
					from argparse import ArgumentParser

# Create an ArgumentParser instance
parser = ArgumentParser()

				
			

Add Arguments to the Parser:

				
					# Add an argument for the output file
parser.add_argument('--output', '-o', required=True, help='The destination file for the output of this program')

# Add an argument for the text to write to the file
parser.add_argument('--text', '-t', required=True, help='The text to write to the file')

				
			

Parse the Arguments:

				
					# Parse the command-line arguments
args = parser.parse_args()

				
			

Use the Parsed Arguments:

				
					# Write the text to the output file
with open(args.output, 'w') as f:
    f.write(args.text + '\n')

# Print a success message
print(f'Wrote "{args.text}" to file {args.output}')

				
			

Complete Example

Here’s the complete example code in a script named writefile.py:

				
					from argparse import ArgumentParser

def main():
    # Create an ArgumentParser instance
    parser = ArgumentParser(description='Write text to a file specified by command-line arguments.')

    # Add arguments
    parser.add_argument('--output', '-o', required=True, help='The destination file for the output of this program')
    parser.add_argument('--text', '-t', required=True, help='The text to write to the file')

    # Parse the arguments
    args = parser.parse_args()

    # Write the text to the output file
    with open(args.output, 'w') as f:
        f.write(args.text + '\n')

    # Print a success message
    print(f'Wrote "{args.text}" to file {args.output}')

if __name__ == '__main__':
    main()

				
			

Running the Script

You can run this script from the terminal as follows:

				
					python writefile.py --output somefile.txt --text "Some text to write to the file"

				
			

Or using the shorter argument names:

				
					python writefile.py -o somefile.txt -t "Some text to write to the file"

				
			

Explanation

  • ArgumentParser: Creates an instance that keeps track of the arguments your program accepts.
  • add_argument: Defines the command-line arguments that the program expects. In this case, --output (-o) for the output file and --text (-t) for the text to write.
  • parse_args: Parses the arguments passed to the script and returns an object with the argument values as attributes.
  • File Operations: The script writes the provided text to the specified output file and prints a success message.

Conclusion

Handling command-line arguments in Python is made simple and efficient with the argparse module. This tutorial covers the basics, allowing you to extend and customize your scripts to accept various inputs and options, enhancing their functionality and usability.