python文件及路径管理函数
os的文件操作
os.path()
os.path 常用方法:
import os
print(os.path.splitext('./data/large.wav')) # 分离文件名和后缀名 ('./data/large', '.wav')
print(os.path.splitext('./data/large')) # 分离文件名和后缀名 ('./data/large', '')
print(os.path.split('/root/runoob.txt')) # 分割文件名与路径 ('/root', 'runoob.txt')
print(os.path.join('root','test','runoob.txt')) # 将目录和文件名合成一个路径 root/test/runoob.txt
os.path.isdir('d:/books/book') # 判断某一路径是否为目录
os.path.isfile('d:/books/book/book.txt') # 判断某一路径是否为文件
os.path.exists(path) # 路径存在则返回True,路径不存在返回False
os.path.abspath(path) # 返回绝对路径
创建目录 os.mkdir(path)
其参数path为要创建的目录,但只能创建一级目录,不能创建多级目录。
os.mkdir(r"C:\Users\Never\Desktop\aa") # 在桌面创建一个aa目录
删除目录 os.rmdir(path)
删除一级目录
os.rmdir('d:\hmm') # 把D盘下的hmm的目录删除
创建多级目录 os.makedirs(path)
创建多级目录,其参数path 为要创建目录的路径。
os.makedirs(r"C:\Users\Never\Desktop\aa\bb") # 在桌面创建一个aa目录,并在aa目录中创建bb目录
删除多级目录 os.removedirs(path)
删除多级目录,注意:要删除的目录必须是空目录,即目录没有文件
os.removedirs('d:\\books\\book') # 注意:要删除的目录必须是空目录
删除文件 os.remove(path)
os.remove('d:\\books\\book\\book.txt') # 删除D盘下books目录下book目录中的book.txt的文件
遍历目录 os.walk(path)
其参数path 为要遍历的目录,返回一个三元素的元组 (root,dirs,files)
- root 所指的是当前正在遍历的这个文件夹的本身的地址
- dirs 是一个 list ,内容是该文件夹中所有的文件夹的名字
- files 同样是 list , 内容是该文件夹中所有的文件
如果我们有如下的文件结构:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
for (root, dirs, files) in os.walk('a'):
# 当前要遍历的根目录为 a
所以 root == 'a'
dirs == [ 'b', 'c', 'd']
files == [ '4.txt', '5.txt']
# ------ 接着遍历 dirs 中的每一个目录 ------ #
### 遍历 b
b: root = 'a\\b' # 要遍历的目录 b
dirs = [] # 遍历目录中的文件夹
files = [ '1.txt', '2.txt'] # 遍历目录中的文件
# dirs为空,返回
### 遍历 c
c: root = 'a\\c' # 要遍历的目录 c
dirs = [] # 遍历目录中的文件夹
files = [ '3.txt' ] # 遍历目录中的文件
PS : 如果想获取文件的全路径,只需要
for f in files:
path = os.path.join(root,f)
### 遍历 d
d: root = 'a\\b' # 要遍历的目录 d
dirs = [] # 遍历目录中的文件夹
files = [] # 遍历目录中的文件
# 遍历完毕,退出循环
综合使用
列出一个文件夹中的所有音频文件,把文件名存储到列表中,这段代码经常会用到
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
wav_list = []
for root, dirnames, filenames in os.walk("./VCTK/p225"):
for filename in fnmatch.filter(filenames, "*.wav"):
# 实现列表特殊字符的过滤或筛选,返回符合匹配“.wav”字符列表
wav_list.append(os.path.join(root, filename))
print(wav_list)
# ['./VCTK/p225\\p225_001.wav', '/VCTK/p225\\p225_002.wav',...
glob模块
glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索,
支持通配符操作 * 、? 、[ ]
这三个通配符,*
代表0个或多个字符,?
代表一个字符,[ ]
匹配指定范围内的字符,如[0-9]
匹配数字。
glob.glob("字符串+通配符")
该方法返回指定路径所有匹配的文件的列表,该方法需要一个参数用来指定匹配的路径字符串(本字符串可以为绝对路径也可以为相对路径),其返回的文件名只包括当前目录里的文件名,不包括子文件夹里的文件。
glob.glob(r'c:\*.txt') 我这里就是获得C盘下的所有txt文件
glob.glob(r'E:\pic\*\*.jpg') 获得指定目录下的所有jpg文件
glob.glob(r'../*.py') 上一层路径下的所有.py文件
fnmatch模块
此模块的主要作用是文件名称的匹配,fnmatch有2个比较常用的方法:fnmatch、filter
fnmatch.fnmatch(filename, patten)
测试filename,是否符合pattern
import fnmatch
import os
for file in os.listdir('.'): #os.listdir返回指定的文件夹包含的文件或文件夹的名字的列表
if fnmatch.fnmatch(file, '*.py'): #判断是否有后缀为.py的文件,*代表文件名长度格式不限制。
print(file)
fnmatch.filter(names, pattern)
实现列表特殊字符的过滤或筛选,返回符合匹配模式的字符列表
import fnmatch
filelist=["a.text","b.jpg","c.png","d.py",'e.text',"sss.py"]
print(fnmatch.filter(filelist,"?.py")) # 匹配前面是一个字符的.py文件
# 输出:d.py
本文来自博客园,作者:I'm_江河湖海,转载请注明原文链接:https://www.cnblogs.com/jhhh/p/16761972.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构