os 模块:文件路径、环境变量、系统命令

部署运行你感兴趣的模型镜像

os 模块:文件路径、环境变量、系统命令

在这里插入图片描述

在软件开发与运维工作中,操作系统交互是核心能力之一:管理文件、读取环境变量、执行系统命令、处理路径差异,几乎贯穿开发、测试、部署、运维的每一个环节。Python 的 os 模块为开发者提供了高效、跨平台的接口,让程序可以方便地访问操作系统资源,同时保持代码可移植性和可维护性。


一、os 模块概览

os 模块提供了以下几类功能:

  1. 文件和目录操作:创建、删除、遍历、重命名
  2. 路径处理:跨平台路径拼接、拆分、规范化
  3. 环境变量:获取、设置、删除系统环境变量
  4. 系统命令执行:运行外部命令、获取命令输出
  5. 操作系统信息:获取当前工作目录、用户信息、系统类型等

这些功能在开发自动化脚本、测试工具、部署工具时极为重要。


二、文件与目录操作

1. 基本操作

import os

# 获取当前工作目录
cwd = os.getcwd()
print(cwd)

# 列出目录下的文件
print(os.listdir("."))

# 创建目录
os.mkdir("test_dir")

# 创建多级目录
os.makedirs("parent/child", exist_ok=True)

# 重命名
os.rename("test_dir", "new_dir")

# 删除目录
os.rmdir("new_dir")
os.removedirs("parent/child")  # 删除多级目录

技巧

  • exist_ok=True 避免重复创建导致异常
  • 使用 os.path.exists 判断文件/目录存在性
if not os.path.exists("data"):
    os.mkdir("data")

2. 文件操作

# 检查是否为文件或目录
print(os.path.isfile("example.txt"))  # True/False
print(os.path.isdir("example.txt"))   # True/False

# 获取文件大小
print(os.path.getsize("example.txt"))

# 获取文件修改时间
print(os.path.getmtime("example.txt"))

三、路径处理

os.path 模块提供跨平台路径处理方法:

# 拼接路径
file_path = os.path.join("folder", "subfolder", "file.txt")
print(file_path)

# 分割路径
dir_name, base_name = os.path.split(file_path)
print(dir_name, base_name)

# 获取文件扩展名
name, ext = os.path.splitext(base_name)
print(name, ext)

# 规范化路径
normalized = os.path.normpath("folder//subfolder/../file.txt")
print(normalized)

启示

  • 避免手动拼接路径(不同系统分隔符不同)
  • 使用 os.path 保持跨平台兼容性

四、环境变量操作

环境变量在配置、部署、系统参数管理中至关重要。

# 获取环境变量
path = os.environ.get("PATH")
print(path)

# 设置环境变量(仅对当前进程及子进程有效)
os.environ["MY_VAR"] = "123"
print(os.environ["MY_VAR"])

# 删除环境变量
os.environ.pop("MY_VAR", None)

应用场景

  • 控制程序行为:如 DEBUG 模式、日志级别
  • 数据库连接参数、API 密钥管理
  • CI/CD 自动化脚本中的系统配置

五、执行系统命令

1. os.system

os.system("echo Hello, World!")
  • 简单、直接
  • 不易获取输出结果

2. 使用 os.popen 获取输出

stream = os.popen("ls -l")
output = stream.read()
print(output)

3. 高级推荐:结合 subprocess 模块(兼容性更好)

import subprocess

result = subprocess.run(["echo", "Hello"], capture_output=True, text=True)
print(result.stdout)

启示

  • os.system 用于简单命令或脚本执行
  • 获取输出或处理错误时,subprocess 更强大、安全

六、跨平台开发技巧

  1. 使用 os.path.join 拼接路径,避免硬编码分隔符
  2. 使用 os.sep、os.name 判断系统类型,实现不同系统逻辑
  3. 文件权限管理
os.chmod("script.sh", 0o755)  # 设置可执行权限
  1. 避免直接修改系统环境变量,使用进程级变量或配置文件

七、应用案例

1. 自动化日志管理

import os
import datetime

log_dir = "logs"
os.makedirs(log_dir, exist_ok=True)
today = datetime.date.today().isoformat()
log_file = os.path.join(log_dir, f"log_{today}.txt")

with open(log_file, "a") as f:
    f.write(f"{datetime.datetime.now()} - 系统启动\n")

2. 配置文件与环境变量结合

db_host = os.environ.get("DB_HOST", "localhost")
db_port = int(os.environ.get("DB_PORT", 3306))
print(f"连接数据库: {db_host}:{db_port}")

3. 脚本自动执行系统命令

backup_dir = "/tmp/backup"
os.makedirs(backup_dir, exist_ok=True)
for file in os.listdir("."):
    if file.endswith(".txt"):
        os.system(f"cp {file} {backup_dir}/")

八、设计与使用启示

  1. 抽象操作系统接口
    os 模块让开发者无需关注底层实现,专注于业务逻辑。

  2. 增强跨平台能力
    os.path 和环境变量操作保证代码在 Windows、Linux、macOS 下一致运行。

  3. 安全与可维护性

    • 避免直接执行用户输入的系统命令
    • 环境变量管理集中化,避免硬编码
  4. 自动化与运维结合
    使用 os 模块可以轻松实现日志管理、文件整理、备份脚本、部署流程自动化。


九、总结

Python 的 os 模块是操作系统交互的基石,掌握它可以让开发者:

  • 高效管理文件与目录
  • 安全处理环境变量
  • 执行系统命令,实现自动化运维
  • 构建跨平台、可维护的脚本和工具
os模块
文件与目录操作
创建, 删除, 遍历, 重命名
路径处理
join, split, splitext, normpath
环境变量
获取, 设置, 删除
系统命令执行
system, popen, subprocess
跨平台技巧
os.sep, os.name, 权限管理
应用案例
日志管理, 配置读取, 自动备份

启示os 模块不仅是工具集合,更是一种操作系统抽象与自动化思维的体现。熟练使用它,能让开发者在开发、测试、运维各环节游刃有余,同时保持代码可移植性和可维护性。

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试者家园

你的认同,是我深夜码字的光!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值