【Python】os模块

os 模块是 Python 标准库中用于与操作系统交互的核心模块,提供了许多操作文件和目

录的函数。

1. 基本介绍

os 模块提供了以下主要功能:

  • 文件和目录操作
  • 路径操作
  • 进程管理
  • 环境变量访问
python 复制代码
import os

2. 常用功能分类

2.1 文件和目录操作

函数/方法 描述
os.getcwd() 获取当前工作目录
os.chdir(path) 改变当前工作目录
os.listdir(path='.') 列出指定目录下的文件和子目录
os.mkdir(path) 创建单个目录
os.makedirs(path) 递归创建多级目录
os.remove(path) 删除文件
os.rmdir(path) 删除空目录
os.removedirs(path) 递归删除空目录
os.rename(src, dst) 重命名文件或目录

2.2 路径操作

函数/方法 描述
os.path.abspath(path) 返回绝对路径
os.path.basename(path) 返回路径中的文件名部分
os.path.dirname(path) 返回路径中的目录部分
os.path.exists(path) 检查路径是否存在
os.path.isfile(path) 检查是否是文件
os.path.isdir(path) 检查是否是目录
os.path.join(path1, path2, ...) 拼接路径
os.path.split(path) 分割路径为目录和文件名
os.path.splitext(path) 分割路径为文件名和扩展名

2.3 系统信息

函数/方法 描述
os.name 操作系统名称 ('posix', 'nt', 'java')
os.environ 系统环境变量字典
os.getenv(key) 获取指定环境变量值
os.cpu_count() 返回CPU数量
os.urandom(n) 生成n字节的随机字节

3. 实用示例

3.1 遍历目录

python 复制代码
# 列出当前目录下所有.py文件
for filename in os.listdir('.'):
    if filename.endswith('.py'):
        print(filename)

3.2 创建目录结构

python 复制代码
# 创建多级目录
if not os.path.exists('project/data'):
    os.makedirs('project/data')

3.3 路径操作

python 复制代码
# 获取当前脚本所在目录
script_dir = os.path.dirname(os.path.abspath(__file__))
print(f"脚本所在目录: {script_dir}")

# 构建新路径
data_path = os.path.join(script_dir, 'data', 'input.txt')
print(f"完整路径: {data_path}")

3.4 文件信息

python 复制代码
# 检查文件是否存在并获取大小
if os.path.isfile('example.txt'):
    size = os.path.getsize('example.txt')
    print(f"文件大小: {size} 字节")

4. 注意事项

  1. 跨平台兼容性 :不同操作系统路径分隔符不同,建议始终使用 os.path.join() 拼接路径
  2. 权限问题:操作文件/目录时要注意程序是否有足够权限
  3. 异常处理 :文件操作可能抛出异常,建议使用 try-except 处理
  4. 路径标准化 :使用 os.path.normpath() 可以规范化路径

5. 进阶用法

5.1 递归遍历目录

python 复制代码
for root, dirs, files in os.walk('.'):
    print(f"当前目录: {root}")
    print(f"子目录: {dirs}")
    print(f"文件: {files}")

5.2 执行系统命令

python 复制代码
# 执行系统命令并获取输出
output = os.popen('ls -l').read()
print(output)

5.3 临时文件操作

python 复制代码
import tempfile

# 创建临时文件
temp_file = tempfile.mkstemp()
print(f"临时文件: {temp_file}")

希望这份指南能帮助你掌握 os 模块的基本用法!在实际开发中,os 模块经常与其他 模块如 shutil、glob 等配合使用。

相关推荐
第九序言T3 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路4 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003964 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_4 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
龙亘川5 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人5 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
quantdash_cc5 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl5 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
Raas1005 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
云和数据.ChenGuang6 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain