在编写 Python 程序时,处理命令行参数是一个常见的需求。Python 提供了多个模块来处理命令行参数,其中 argparse
是最强大和灵活的一个。
参考文章:Python 内置模块 argparse | 简单一点学习 easyeasy.me
argparse
是 Python 标准库中的一个模块,用于编写用户友好的命令行界面。它可以自动生成帮助和使用信息,并处理用户输入的错误。argparse
支持位置参数和可选参数,并且可以轻松地定义参数的类型和默认值。
下面是一个使用 argparse
的基本示例:
import argparse
def main():
# 创建解析器
parser = argparse.ArgumentParser(description='这是一个示例程序')
# 添加位置参数
parser.add_argument('filename', type=str, help='要处理的文件名')
# 添加可选参数
parser.add_argument('--verbose', '-v', action='store_true', help='增加输出信息的详细程度')
# 解析参数
args = parser.parse_args()
# 使用参数
print(f"处理的文件是: {args.filename}")
if args.verbose:
print("详细模式已启用")
if __name__ == '__main__':
main()
解释:
ArgumentParser
对象包含将命令行解析成 Python 数据类型所需的全部信息。description
参数用于生成帮助信息。add_argument
方法用于定义单个命令行参数。filename
是一个位置参数,用户在运行程序时必须提供。--verbose
和 -v
是该参数的两种形式。action='store_true'
表示如果用户提供了该参数,则将其值设为 True
,否则为 False
。parse_args
方法解析命令行参数并将其存储在 args
对象中。运行示例:
$ python script.py example.txt
处理的文件是: example.txt
$ python script.py example.txt --verbose
处理的文件是: example.txt
详细模式已启用
$ python script.py --help
usage: script.py [-h] [--verbose] filename
这是一个示例程序
positional arguments:
filename 要处理的文件名
optional arguments:
-h, --help show this help message and exit
--verbose, -v 增加输出信息的详细程度
parser.add_argument('--count', '-c', type=int, default=1, help='重复次数')
在上面的例子中,--count
参数需要一个整数类型,并且有一个默认值 1
。
parser.add_argument('numbers', type=int, nargs='+', help='一个或多个整数')
nargs='+'
表示该参数需要一个或多个值。
argparse
支持子解析器,可以为程序创建子命令。例如,git
命令有 git commit
, git push
等子命令。
import argparse
def commit(args):
print(f"提交消息: {args.message}")
def push(args):
print(f"推送到远程仓库: {args.remote}")
def main():
parser = argparse.ArgumentParser(description='Git 模拟程序')
subparsers = parser.add_subparsers(dest='command', required=True)
# 子命令 commit
parser_commit = subparsers.add_parser('commit', help='提交更改')
parser_commit.add_argument('message', type=str, help='提交消息')
# 子命令 push
parser_push = subparsers.add_parser('push', help='推送到远程仓库')
parser_push.add_argument('--remote', '-r', type=str, default='origin', help='远程仓库名称')
args = parser.parse_args()
if args.command == 'commit':
commit(args)
elif args.command == 'push':
push(args)
if __name__ == '__main__':
main()
运行示例:
$ python script.py commit "Initial commit"
提交消息: Initial commit
$ python script.py push -r origin
推送到远程仓库: origin
argparse
会自动处理一些常见的错误,例如缺少必需参数、无效的参数类型等,并生成相应的错误信息。
$ python script.py --verbose
usage: script.py [-h] filename
script.py: error: the following arguments are required: filename
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。