操作系统接口与环境变量
原文:os 与环境变量
一句话
os 模块提供操作系统接口,让 Python 程序能操作文件、进程和环境变量。
什么时候翻这页
- Agent 需要读取或设置环境变量以配置自身行为
- 工具调用需要访问文件系统或执行系统命令
- Agent 需要管理子进程或执行外部程序
- 需要处理跨平台文件路径和系统差异
核心概念
- 环境变量:操作系统提供的键值对,用于存储配置信息
- 文件描述符:操作系统用于标识打开文件的整数
- 进程管理:创建、控制和监控操作系统进程
- 文件系统接口:访问和操作文件与目录的函数集合
- 系统调用:程序请求操作系统服务的接口
怎么做
环境变量操作
import os
# 读取环境变量
api_key = os.getenv('API_KEY', 'default_value')
print(f"API Key: {api_key}")
# 设置环境变量
os.environ['API_KEY'] = 'new_value'
# 删除环境变量
if 'TEMP_VAR' in os.environ:
del os.environ['TEMP_VAR']
文件操作
# 检查文件是否存在
if os.path.exists('file.txt'):
print("文件存在")
# 获取文件信息
file_stat = os.stat('file.txt')
print(f"文件大小: {file_stat.st_size} 字节")
# 遍历目录
with os.scandir('/path/to/dir') as entries:
for entry in entries:
if entry.is_file():
print(f"文件: {entry.name}")
进程管理
# 执行命令
import subprocess
# 使用 os.system (简单但不推荐)
os.system('ls -l')
# 使用 subprocess (推荐)
subprocess.run(['ls', '-l'])
# 创建子进程
pid = os.fork()
if pid == 0:
# 子进程
print("这是子进程")
else:
# 父进程
print(f"这是父进程,子进程ID: {pid}")
命令 / API 速查
| 函数/方法 | 描述 |
|---|---|
os.environ | 包含环境变量的字典对象 |
os.getenv(key, default) | 获取环境变量值 |
os.putenv(key, value) | 设置环境变量 |
os.path.exists(path) | 检查路径是否存在 |
os.stat(path) | 获取文件/目录状态信息 |
os.listdir(path) | 列出目录内容 |
os.mkdir(path) | 创建目录 |
os.remove(path) | 删除文件 |
os.rename(src, dst) | 重命名文件/目录 |
os.getcwd() | 获取当前工作目录 |
os.chdir(path) | 更改当前工作目录 |
os.fork() | 创建子进程 |
os.execvp(file, args) | 执行新程序 |
os.spawnv(mode, path, args) | 创建新进程 |
os.waitpid(pid, options) | 等待子进程结束 |
与 Agent 开发的联系
- 环境配置:Agent 通常通过环境变量获取 API 密钥、配置信息等,
os.getenv()是获取这些配置的安全方式 - 工具调用:当 Agent 需要执行外部工具或命令时,
os.system()或subprocess模块提供了执行能力 - 文件操作:Agent 可能需要读取或写入文件来存储状态或结果,
os模块提供了跨平台的文件操作接口
初学者易错点
- 环境变量修改不生效:直接调用
os.putenv()不会更新os.environ,应该直接修改os.environ - 路径分隔符混用:不同操作系统使用不同的路径分隔符(
/vs\),应使用os.path.join()而不是字符串拼接 - 文件描述符未关闭:使用
os.open()等低级函数打开的文件描述符需要手动关闭,否则会导致资源泄漏 - 权限问题:文件操作可能因权限不足而失败,应使用
try-except处理PermissionError - 跨平台兼容性:某些
os函数在不同平台上行为不同,编写跨平台代码时需要注意这些差异
相关词条
library-os-path- 路名操作与路径处理library-subprocess- 进程管理与子进程通信library-shutil- 高级文件操作library-tempfile- 临时文件与目录处理library-pathlib- 面向对象的路径操作library-sys- 系统相关参数与函数