python读取环境变量

这里提供一段代码用于初始化变量。该变量不是来自脚本内部定义或调用 Python 脚本时传入的参数,而是来源于系统环境变量,常见于构建流水线中构建机的环境设置。以下是代码示例:

python 复制代码
@dataclass
class StartupVars:
    BRANCH_TAG: str = "0DefaultBranch"
    APP_VERSION: str = "0.0.0.0"
    RES_VERSION: str = "0.0.0.1"
    BUILD_TARGET: str = "Unknown"
    PIPELINE_TAG: str = "Unknown"
    CONFIG_SUFFIX: str = ""
    BK_CI_PIPELINE_ID: str = "p-xxx"
    BK_CI_BUILD_ID: str = "b-xxx"
    BK_CI_BUILD_NUM: str = "000"
    BK_CI_BUILD_TASK_ID: str = "t-xxx"
    BK_CI_PARENT_PIPELINE_ID: str = ""
    BK_CI_PARENT_BUILD_ID: str = ""
    EXCEL_CONF_KEY: str = ""
    PROJECT_NAME: str = "myGame"




def init_startup_vars():  # pragma
    keys = [field.name for field in fields(StartupVars)]
    selected_env_vars = {k: os.environ[k] for k in keys if k in os.environ}
    global startup_vars
    startup_vars = StartupVars(**selected_env_vars)

我们来分析下init_startup_vars函数

python 复制代码
keys = [field.name for field in fields(StartupVars)]

这里使用dataclasses.fields()函数获取StartupVars数据类的所有字段

提取字段名称列表,如:'BRANCH_TAG', 'APP_VERSION', 'BUILD_TARGET', ...

python 复制代码
selected_env_vars = {k: os.environ[k] for k in keys if k in os.environ}

遍历所有StartupVars字段名,只选择那些在系统环境变量中存在的字段并创建包含有效环境变量的字典。想要的变量已经存入了selected_env_vars

python 复制代码
global startup_vars
startup_vars = StartupVars(**selected_env_vars)

这里声明全局变量startup_vars,使用筛选后的环境变量字典创建StartupVars实例

未在环境变量中设置的字段将使用StartupVars类中定义的默认值

StartupVars数据类结构,如上面的代码,使用数据类确保类型安全,所有字段都有明确的类型注解和默认值,有效避免运行时类型错误

后面使用这些参数,直接这样访问

python 复制代码
# 在任何需要的地方访问启动配置
branch = startup_vars.BRANCH_TAG
version = startup_vars.APP_VERSION

或者有些情况下转为字典后通过字符串访问

python 复制代码
def startup_vars_dict():
    return asdict(startup_vars)


startupVarsDict = startup_vars_dict()

startupVarsDict["BRANCH_TAG"]
相关推荐
聪明蛋子哟9 分钟前
Stagehand v3多语言SDK:Python/Go/Rust/Java下的浏览器自动化统一方案
python·golang·rust
今天AI了吗1 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
卷无止境1 小时前
Windows 上丝滑开发 Python,并稳定构建 Docker 镜像
后端·python·docker
TELL5211 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
Csvn2 小时前
🐍 Day 4: Python 控制流 — 条件、循环与推导式的艺术
后端·python
大鹏说大话4 小时前
从爬虫到决策引擎:大数据下自媒体如何用Python挖掘用户痛点
开发语言·爬虫·python
Niuguangshuo4 小时前
silero-vad:超轻量级开源 VAD 实践指南
开发语言·python
2501_944676165 小时前
揭秘!WORDTIP公司靠不靠谱?小白必看
大数据·人工智能·python
Minner-Scrapy5 小时前
Scrapy 2.17 源码解析:Scheduler 调度器与磁盘/内存双队列
java·爬虫·python·scrapy·网络爬虫·twisted
CODER03046 小时前
Anaconda和Mamba创建环境管理包常用命令合集
python·深度学习·conda·虚拟环境·mamba·常用命令大全