Z
ZHANK
编程在线教程Python 教程命令行参数解析
常用第三方库

命令行参数解析

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()