python文件及路径管理函数

Posted lxp-never

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python文件及路径管理函数相关的知识,希望对你有一定的参考价值。

glob模块

说明:

1、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个比较常用的方法:fnmatchfilter

字符 含义
* 匹配所有字符
匹配单个字符
[seq] 匹配指定范围内的字符
[seq] 匹配不在指定范围内的字符

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

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.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.remov(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 , 内容是该文件夹中所有的文件(不包括子目录)

如果我们有如下的文件结构:

   a ->   b   ->   1.txt,  2.txt
          c   ->   3.txt
          d   ->   
        4.txt
        5.txt
for (root, dirs, files) in os.walk(a):
    #第一次运行时,当前遍历目录为 a
    所以 root == a
         dirs == [ b, c, d]
         files == [ 4.txt, 5.txt]

    # 接着遍历 dirs 中的每一个目录
    b:  root  = a\\\\b
        dirs  = []
        files = [ 1.txt, 2.txt]
    
    # dirs为空,返回
    # 遍历c
    c:  root  = a\\\\c
        dirs  = []
        files = [ 3.txt ]
    
    PS : 如果想获取文件的全路径,只需要 
    for f in files:
        path = os.path.join(root,f)
    
    # 遍历d
    d:  root  = a\\\\b
        dirs  = []
        files = []

    # 遍历完毕,退出循环

综合使用

列出一个文件夹中的所有音频文件,把文件名存储到列表中,这段代码经常会用到

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‘,...

 

以上是关于python文件及路径管理函数的主要内容,如果未能解决你的问题,请参考以下文章

自学Python:查看文件夹及子目录所有文件路径

python基本操作-文件目录及路径

python基本操作-文件目录及路径

python里读取文件路径上一级路径及文件的方法

python工具-文件及文件夹移动及处理

python 模块路径查找 及 添加