命令行参数解析
argparse 构建 CLI、位置/可选参数、子命令、click 库
命令行参数解析
argparse 让 Python 脚本像 Linux 命令一样接受参数。click 是更现代的选择——用装饰器定义 CLI。
学完本章你将: 掌握 argparse 构建 CLI、位置/可选参数、子命令。
argparse 基础
python
import argparse
parser = argparse.ArgumentParser(description="文件处理工具")
parser.add_argument("filename", help="要处理的文件")
parser.add_argument("-o", "--output", default="output.txt", help="输出文件")
parser.add_argument("-v", "--verbose", action="store_true", help="详细输出")
parser.add_argument("-n", "--count", type=int, default=1, help="处理次数")
args = parser.parse_args()
print(f"处理 {args.filename} → {args.output}")
if args.verbose:
print(f"执行 {args.count} 次")
# 运行:python script.py data.txt -o result.txt -v -n 3
子命令
python
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest="command")
# git add 风格
add_parser = subparsers.add_parser("add", help="添加文件")
add_parser.add_argument("files", nargs="+")
# git commit 风格
commit_parser = subparsers.add_parser("commit", help="提交")
commit_parser.add_argument("-m", "--message", required=True)
args = parser.parse_args()
if args.command == "add":
print(f"添加文件: {args.files}")
elif args.command == "commit":
print(f"提交: {args.message}")
click —— 装饰器风格
python
import click
@click.command()
@click.argument("filename")
@click.option("-o", "--output", default="output.txt")
@click.option("-v", "--verbose", is_flag=True)
def cli(filename, output, verbose):
"""文件处理工具"""
click.echo(f"处理 {filename} → {output}")
if verbose:
click.echo("详细信息...")
if __name__ == "__main__":
cli()