python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python os模块路径

Python os 模块与路径从基础到实战应用

作者:qwerty12ljhxjdj

本文详解Python中os模块与路径处理,涵盖目录创建、遍历、删除及文件操作,提供日志管理、数据备份等实战案例,强调跨平台兼容与异常处理最佳实践,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

在 Python 开发中,文件和目录的操作是必不可少的技能。无论是数据处理、日志记录还是程序配置,都需要与文件系统交互。Python 的os模块和os.path子模块提供了丰富的接口,能够轻松实现目录创建、文件删除、路径处理等功能。本文将结合实例代码,详细讲解这些模块的核心用法。

一、路径基础:理解路径表示方式

在开始操作文件系统前,首先需要掌握路径的表示方法:

二、os 模块核心功能:目录与文件操作

os模块提供了直接与操作系统交互的功能,涵盖目录创建、查看、删除等常用操作。

1. 获取当前工作目录与路径分隔符

import os
# 获取当前工作目录(绝对路径)
print(os.getcwd())  # 示例输出:C:\project\demo
# 获取当前系统的路径分隔符(Windows为\,Linux/macOS为/)
print(os.sep)  # 示例输出:\(Windows系统)

2. 目录创建:os.makedirs()

os.makedirs()支持递归创建目录(即同时创建多级目录),无需手动逐级创建父目录。

# 递归创建单级子目录
os.makedirs('./data/sub3')  # 在当前目录创建data目录,再在其中创建sub3目录
# 递归创建多级子目录
os.makedirs('./data/b3/c5')  # 创建data/b3/c5三级目录

注意:如果目录已存在,再次调用会报错。可添加exist_ok=True参数避免错误:

os.makedirs('./data/sub3', exist_ok=True)  # 目录存在时不报错

3. 目录查看:os.listdir()与os.walk()

(1)os.listdir():查看单层目录

返回指定目录下的所有子目录和文件(仅显示一级,不递归)。

# 查看./data目录下的内容
print(os.listdir('./data'))  
# 示例输出:['sub3', 'b3'](假设data目录下有这两个子目录)

(2)os.walk():递归遍历目录

os.walk()是一个生成器,可递归遍历目录树,返回每个目录的三元组(当前目录路径, 子目录列表, 文件列表)

# 递归遍历./data目录
gen = os.walk('./data')
# 第一次调用next():返回当前目录(data)的信息
print(next(gen))  
# 示例输出:('./data', ['sub3', 'b3'], [])
# 第二次调用next():返回第一个子目录(sub3)的信息
print(next(gen))  
# 示例输出:('./data/sub3', [], [])
# 第三次调用next():返回第二个子目录(b3)的信息
print(next(gen))  
# 示例输出:('./data/b3', ['c5'], [])

实战:收集目录下所有文件名称

# 初始化文件列表
all_files = []
# 遍历所有目录,收集文件
for root, dirs, files in os.walk('./data'):
    all_files.extend(files)  # 将当前目录的文件添加到列表
print(all_files)  # 输出所有文件名称(如['111.py', '6.py'])

4. 目录与文件删除

(1)删除文件:os.remove()

# 先判断文件是否存在,避免报错
if os.path.exists('data/b3/c5/111.py'):
    os.remove('data/b3/c5/111.py')  # 删除指定文件

(2)删除空目录:os.rmdir()与os.removedirs()

# 删除叶子目录(必须为空)
if os.path.exists('data/sub3/cc'):
    os.rmdir('data/sub3/cc')
# 递归删除空目录(如删除c5后,若b3为空则继续删除b3)
if os.path.exists('data/b3/c5'):
    os.removedirs('data/b3/c5')

注意:如果目录非空(包含文件或子目录),删除会报错。删除非空目录需使用shutil.rmtree()(需导入shutil模块)。

三、os.path 模块:路径处理工具

os.path模块提供了一系列路径处理函数,解决不同操作系统路径格式差异的问题,确保路径操作跨平台兼容。

1. 判断路径类型

import os.path
# 判断是否为目录
print(os.path.isdir('./data/sub3/test'))  # 输出:False(假设test不存在)
# 判断是否为文件
print(os.path.isfile('./data/sub3/6.py'))  # 输出:True(假设文件存在)

2. 获取文件大小

os.path.getsize(path)返回文件的大小(单位:字节)。

# 获取文件大小
print(os.path.getsize('./data/sub3/6.py'))  # 示例输出:1024(表示1024字节)

3. 路径分割与拼接

# 分割路径
print(os.path.split('./data/sub3/6.py'))  
# 输出:('./data/sub3', '6.py')
# 拼接路径
print(os.path.join(r'.\data\sub3', '6.py'))  
# 输出:.\data\sub3\6.py(Windows系统)
# 或 ./data/sub3/6.py(Linux/macOS系统)

优势os.path.join()会自动适配系统分隔符,避免手动写死/\导致的跨平台问题。

四、实战场景与最佳实践

try:
    os.makedirs('./data/sub3')
except PermissionError:
    print("无权限创建目录")

五、总结

osos.path模块是 Python 文件系统操作的核心工具,通过本文的学习,你已掌握:

到此这篇关于Python os 模块与路径从基础到实战应用的文章就介绍到这了,更多相关python os模块路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文