推荐新项目首选Click:声明式装饰器定义命令与参数,自动处理解析、帮助和类型转换;argparse适合需精细控制的场景,二者可互补。
Python命令行工具开发,Click比argparse更简洁、可维护性更强,但理解argparse有助于掌握底层逻辑。实际项目中,推荐用Click快速构建健壮CLI,必要时再深入argparse定制细节。
Click通过装饰器声明命令、参数和选项,自动处理解析、帮助生成、类型转换和错误提示。
@click.command()
@click.version_option("1.0")
@click.argument("input_file", type=click.Path(exists=True))
@click.option("-o", "--output-dir", default=".", type=click.Path(file_okay=False, writable=True))
@click.option("--force", is_flag=True, help="覆盖已存在文件")
def process(input_file, output_dir, force):
click.echo(f"处理 {input_file} → {output_dir}")
argparse是标准库,无需额外依赖,适合需要精细控制解析流程、动态添加参数或与旧系统集成的场景。
parser = argparse.ArgumentParser(description="数据处理工具")
parser.add_argument("src", help="源文件路径")
parser.add_argument("-d", "--dest", required=True, help="目标目录")
parser.add_argument("--dry-run", action="store_true", help="仅预览不执行")
args = parser.parse_args()
不强行二选一。Click内部其实基于argparse封装,二者可互补使用。
让CLI真正可用,不止于功能正确。
pager或click.secho输出用户友好的提示