Python如何接收带变量名的命令行参数 如python test.py a=10 b=20
Python实现命令行键值对传参的方案
这类需求完全可以在Python中实现,常用的实现方式有以下几种:
方案1:原生解析sys.argv(完全适配a=10格式,无额外依赖)
直接读取命令行参数列表,按=分割得到键值对即可,适合简单场景:
import sys def parse_key_value_args(): args = {} for arg in sys.argv[1:]: # 只分割第一个=,避免value中包含=的场景报错 if '=' in arg: key, value = arg.split('=', 1) args[key.strip()] = value.strip() return args if __name__ == '__main__': args = parse_key_value_args() # 需要数值类型自行转换即可 a = int(args.get('a', 0)) # 第二个参数为默认值 b = int(args.get('b', 0)) print(f"a的值为{a}, b的值为{b}")
运行命令python test.py a=10 b=20即可直接拿到对应参数值。
方案2:标准库argparse(官方规范方案)
Python内置的标准命令行解析库,支持类型校验、默认值、帮助文档生成,通常使用--参数名=值的规范格式:
import argparse # 初始化解析器 parser = argparse.ArgumentParser(description='测试参数解析') # 定义接收的参数 parser.add_argument('--a', type=int, default=0, help='参数a的说明') parser.add_argument('--b', type=int, default=0, help='参数b的说明') # 解析参数 args = parser.parse_args() # 直接使用属性调用 print(args.a) print(args.b)
运行命令为python test.py --a=10 --b=20,如果需要兼容无--前缀的a=10格式,可配合方案1的解析逻辑使用。
方案3:第三方库typer/click(适合复杂命令行工具)
如果需要开发功能复杂的命令行工具,可使用typer等第三方库,自动类型推导、帮助生成的能力更强:
- 先安装依赖:
pip install typer - 代码示例:
import typer app = typer.Typer() @app.command() def main( a: int = typer.Option(0, help="参数a的说明"), b: int = typer.Option(0, help="参数b的说明") ): print(f"a={a}, b={b}") if __name__ == "__main__": app()
运行命令为python test.py --a=10 --b=20,还可直接执行python test.py --help查看自动生成的帮助文档。
内容的提问来源于stack exchange,提问作者A. Gehani
相关产品推荐
相关产品推荐

