如何向Python脚本传递命令行参数,实现base_url动态配置?
实现动态传递base_url参数的两种方法
嗨,这个需求很常见,我给你两种实用的实现方式,你可以根据自己的场景选择:
方法一:用sys.argv直接解析键值对参数
这种方式最直接,完美匹配你想要的调用格式,适合参数不多的简单场景:
在你的file.py中写入以下代码:
import sys # 用来存储解析后的参数 params = {} # 遍历命令行传入的参数(跳过第一个脚本名参数) for arg in sys.argv[1:]: # 按第一个等号拆分键和值,避免值里包含等号的情况 key, value = arg.split('=', 1) # 移除值两端的单/双引号(如果用户加了的话) clean_value = value.strip('\'"') params[key.strip()] = clean_value # 获取base_url参数 base_url = params.get('base_url') if base_url: print(f"成功获取base_url:{base_url}") # 这里可以写你需要用base_url执行的逻辑 else: print("请传入base_url参数,格式示例:python file.py base_url='http://google.com'")
调用时直接用你想要的命令:python file.py base_url='http://google.com'
运行后,base_url变量就会被设为http://google.com,你可以在脚本里直接使用它。
方法二:用argparse模块(更规范的专业写法)
如果你的脚本以后可能需要扩展更多参数,argparse会是更好的选择——它支持参数校验、自动生成帮助信息,非常适合复杂脚本。
代码示例:
import argparse # 创建参数解析器,添加脚本描述 parser = argparse.ArgumentParser(description="需要传入base_url的业务脚本") # 添加base_url参数,设置为必填,并给出帮助提示 parser.add_argument('--base_url', required=True, help="请输入目标base_url,例如:http://google.com") # 解析命令行参数 args = parser.parse_args() # 直接使用解析后的base_url print(f"当前使用的base_url是:{args.base_url}") # 后续业务逻辑直接用args.base_url即可
调用时使用更规范的命令格式:python file.py --base_url http://google.com
或者带引号也完全没问题:python file.py --base_url 'http://google.com'
如果用户忘记传参数,脚本会自动提示错误;运行python file.py -h还能看到详细的帮助说明,体验更友好。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

