Introduction to Python Argparse
Argparse is a powerful library in Python used for creating command-line interfaces (CLI). It allows developers to specify what arguments a program requires and handles the parsing and processing of command-line arguments seamlessly.
Basic Usage of Argparse
To get started with argparse, you need to import the library and create an ArgumentParser object:
import argparse
parser = argparse.ArgumentParser(description='A simple argument parser example.')
Adding Arguments
Arguments can be added to the parser using the add_argument
method:
parser.add_argument('name', type=str, help='Name of the user')
parser.add_argument('--age', type=int, help='Age of the user')
Parsing Arguments
Once arguments are added, you can parse them using the parse_args
method:
args = parser.parse_args()
print(f'Name: {args.name}, Age: {args.age}')
Positional and Optional Arguments
Positional arguments are mandatory, while optional arguments are not. Optional arguments are usually prefixed with --
or -
:
parser.add_argument('filename', type=str, help='File to be processed')
parser.add_argument('-v', '--verbose', action='store_true', help='Increase output verbosity')
Default Values
You can assign default values to arguments:
parser.add_argument('--timeout', type=int, default=30, help='Timeout duration in seconds')
Mutually Exclusive Arguments
Argparse can handle mutually exclusive arguments using add_mutually_exclusive_group
:
group = parser.add_mutually_exclusive_group()
group.add_argument('--quiet', action='store_true', help='Suppress output')
group.add_argument('--debug', action='store_true', help='Enable debug mode')
Subparsers for Sub-Commands
Argparse supports sub-commands through subparsers:
subparsers = parser.add_subparsers(dest='command')
parser_a = subparsers.add_parser('command_a', help='Command A')
parser_a.add_argument('--foo', type=int, help='Foo for Command A')
Complete Example CLI Application
Here is a complete example of a CLI application that utilizes many of argparse’s features:
import argparse
def main():
parser = argparse.ArgumentParser(description='Example CLI application')
parser.add_argument('username', type=str, help='Username for login')
parser.add_argument('--password', type=str, help='Password for login')
parser.add_argument('--verbose', '-v', action='store_true', help='Show detailed output')
subparsers = parser.add_subparsers(dest='command', help='Available commands')
user_parser = subparsers.add_parser('user', help='User-related commands')
user_parser.add_argument('--create', action='store_true', help='Create a new user')
user_parser.add_argument('--delete', type=int, help='Delete a user by ID')
admin_parser = subparsers.add_parser('admin', help='Admin-related commands')
admin_parser.add_argument('--ban', type=int, help='Ban a user by ID')
args = parser.parse_args()
if args.verbose:
print('Verbose mode enabled')
if args.command == 'user':
if args.create:
print(f'Creating user: {args.username}')
elif args.delete:
print(f'Deleting user ID: {args.delete}')
elif args.command == 'admin':
if args.ban:
print(f'Banning user ID: {args.ban}')
else:
print(f'Username: {args.username}')
if args.password:
print(f'Password: {args.password}')
if __name__ == '__main__':
main()
In this example, the CLI application supports user login, verbosity, and sub-commands for user and admin operations.
This guide covers the essential aspects of argparse. By leveraging these features, you can efficiently build robust CLI applications.
Hash: ab25a67072b917611b3765a8f1cf2d9c31c6fec27ee308f6d6b605fa02d6b29a