zoukankan      html  css  js  c++  java
  • 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:UsersNeverDesktopaa")  # 在桌面创建一个aa目录

    删除目录  os.rmdir(path)

    删除一级目录

    os.rmdir('d:hmm')     # 把D盘下的hmm的目录删除

    创建多级目录  os.makedirs(path)

    创建多级目录,其参数path 为要创建目录的路径。

    os.makedirs(r"C:UsersNeverDesktopaab")  # 在桌面创建一个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 , 内容是该文件夹所有的文件

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

    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 = []                  # 遍历目录中的文件
    
        # 遍历完毕,退出循环

    综合使用

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

    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个比较常用的方法: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
  • 相关阅读:
    Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)
    IP地址资源的分配和管理
    破解中常见的指令及修改
    8086 CPU 寻址方式
    汇编指令速查
    关于ida pro的插件keypatch
    动态方式破解apk进阶篇(IDA调试so源码)
    IDA7.0安装keypatch和findcrypt-yara插件
    Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)
    IDA动态调试技术及Dump内存
  • 原文地址:https://www.cnblogs.com/LXP-Never/p/11093716.html
Copyright © 2011-2022 走看看