Python环境变量案例如何读取系统环境变量

wen python案例 36

本文目录导读:

Python环境变量案例如何读取系统环境变量

  1. 使用 os.environ 字典
  2. 使用 os.getenv() 函数
  3. 使用 os.environ 的键访问
  4. 实际应用案例
  5. 设置环境变量的方法
  6. 在命令行设置环境变量
  7. 使用 .env 文件(最佳实践)
  8. 注意事项

我来给你介绍Python读取系统环境变量的几种方法及案例。

使用 os.environ 字典

这是最常用的方法,os.environ 是一个包含所有环境变量的字典。

import os
# 获取所有环境变量(字典形式)
print("所有环境变量:")
for key, value in os.environ.items():
    print(f"{key}: {value}")
# 获取单个环境变量
path = os.environ.get('PATH')
print(f"\nPATH环境变量: {path}")
# 获取不存在的变量(返回None)
not_exist = os.environ.get('NOT_EXIST_VARIABLE')
print(f"不存在的变量: {not_exist}")
# 获取不存在的变量(设置默认值)
default_var = os.environ.get('MY_CUSTOM_VAR', 'default_value')
print(f"带默认值的变量: {default_var}")

使用 os.getenv() 函数

更简洁的方式,专门用于获取环境变量:

import os
# 获取单个环境变量
home = os.getenv('HOME')  # Linux/Mac
# home = os.getenv('USERPROFILE')  # Windows
print(f"Home目录: {home}")
# 带默认值
debug = os.getenv('DEBUG_MODE', 'false')
print(f"调试模式: {debug}")
# 类型转换示例
thread_count = int(os.getenv('THREAD_COUNT', '4'))
print(f"线程数: {thread_count}")

使用 os.environ 的键访问

直接通过键访问,但需要处理异常:

import os
# 直接访问(不存在会抛出KeyError)
try:
    my_var = os.environ['MY_VARIABLE']
    print(f"环境变量MY_VARIABLE: {my_var}")
except KeyError:
    print("环境变量MY_VARIABLE不存在")
# 使用in检查是否存在
if 'DATABASE_URL' in os.environ:
    print(f"数据库连接: {os.environ['DATABASE_URL']}")
else:
    print("未设置数据库连接")

实际应用案例

案例1:数据库配置

import os
import mysql.connector  # 假设使用mysql
class DatabaseConfig:
    def __init__(self):
        self.host = os.getenv('DB_HOST', 'localhost')
        self.port = int(os.getenv('DB_PORT', '3306'))
        self.user = os.getenv('DB_USER', 'root')
        self.password = os.getenv('DB_PASSWORD', '')
        self.database = os.getenv('DB_NAME', 'test')
    def get_connection(self):
        return mysql.connector.connect(
            host=self.host,
            port=self.port,
            user=self.user,
            password=self.password,
            database=self.database
        )
# 使用示例
config = DatabaseConfig()
print(f"数据库配置: {config.host}:{config.port}")

案例2:API密钥配置

import os
import requests
class APIClient:
    def __init__(self):
        self.api_key = os.environ.get('API_KEY')
        if not self.api_key:
            raise ValueError("请设置API_KEY环境变量")
        self.api_url = os.getenv('API_URL', 'https://api.example.com')
        # 环境切换
        self.env = os.getenv('APP_ENV', 'development')
        print(f"当前运行环境: {self.env}")
    def call_api(self, endpoint):
        headers = {
            'Authorization': f'Bearer {self.api_key}',
            'Content-Type': 'application/json'
        }
        response = requests.get(
            f"{self.api_url}/{endpoint}",
            headers=headers
        )
        return response.json()
# 使用示例
try:
    client = APIClient()
    # 调用API
    # result = client.call_api('users')
except ValueError as e:
    print(f"配置错误: {e}")

案例3:多环境配置管理

import os
class AppConfig:
    """应用程序配置管理器"""
    def __init__(self):
        self.env = os.getenv('APP_ENV', 'development')
        self.load_config()
    def load_config(self):
        """根据环境加载配置"""
        if self.env == 'production':
            self.debug = False
            self.log_level = 'ERROR'
        elif self.env == 'staging':
            self.debug = True
            self.log_level = 'INFO'
        else:  # development
            self.debug = True
            self.log_level = 'DEBUG'
        # 数据库配置
        self.db_config = {
            'host': os.getenv(f'DB_HOST_{self.env.upper()}', 'localhost'),
            'port': int(os.getenv(f'DB_PORT_{self.env.upper()}', '5432')),
            'user': os.getenv(f'DB_USER_{self.env.upper()}', 'admin'),
            'password': os.getenv(f'DB_PASSWORD_{self.env.upper()}', ''),
        }
    def print_config(self):
        print(f"当前环境: {self.env}")
        print(f"调试模式: {self.debug}")
        print(f"日志级别: {self.log_level}")
        print(f"数据库配置: {self.db_config}")
# 使用示例
config = AppConfig()
config.print_config()

设置环境变量的方法

import os
# 设置临时环境变量(仅当前进程有效)
os.environ['TEMP_VARIABLE'] = 'temporary_value'
print(f"临时变量: {os.getenv('TEMP_VARIABLE')}")
# 删除环境变量
if 'TEMP_VARIABLE' in os.environ:
    del os.environ['TEMP_VARIABLE']
    print("临时变量已删除")

在命令行设置环境变量

# Linux/Mac
export MY_VARIABLE=my_value
export DATABASE_URL=mysql://user:pass@localhost/db
# Windows
set MY_VARIABLE=my_value
set DATABASE_URL=mysql://user:pass@localhost/db

使用 .env 文件(最佳实践)

首先安装 python-dotenv:

pip install python-dotenv

创建一个 .env 文件:

DATABASE_URL=mysql://user:pass@localhost/mydb
API_KEY=your_secret_key_here
APP_ENV=development
DEBUG=true

在代码中加载:

from dotenv import load_dotenv
import os
# 加载.env文件
load_dotenv()
# 现在可以直接使用环境变量
db_url = os.getenv('DATABASE_URL')
api_key = os.getenv('API_KEY')
print(f"数据库连接: {db_url}")
print(f"API KEY: {api_key[:5]}...")

注意事项

  1. 安全性:不要在代码中硬编码敏感信息,使用环境变量存储密码、密钥等
  2. 类型转换:环境变量都是字符串,需要手动转换为其他类型
  3. 默认值:始终为环境变量提供合理的默认值
  4. 环境管理:使用不同的 .env 文件管理开发、测试、生产环境

这些方法基本覆盖了Python操作环境变量的所有常见场景。

抱歉,评论功能暂时关闭!