zoukankan      html  css  js  c++  java
  • Python3标准库:fnmatch UNIX式glob模式匹配

    1. fnmatch UNIX式glob模式匹配

    fnmatch模块用于根据glob模式(如UNIX shell所用的模式)比较文件名。

    1.1 简单匹配

    fnmatch()将一个文件名与一个模式进行比较,并返回一个布尔值,指示二者是否匹配。如果操作系统使用一个区分大小写的文件系统,则这个比较就是区分大小写的。

    import fnmatch
    import os
    
    pattern = 'Demo*.py'
    print('Pattern :', pattern)
    print()
    
    files = os.listdir('.')
    for name in sorted(files):
        print('Filename: {:<25} {}'.format(
            name, fnmatch.fnmatch(name, pattern)))

    在这个例子中,这个模式会匹配所有以'Demo'开头并以'.py'结尾的文件。

    要强制完成一个区分大小写的比较,而不论文件系统和操作系统如何设置,可以使用fnmatchcase()。 

    import fnmatch
    import os
    
    pattern = 'Demo*.PY'
    print('Pattern :', pattern)
    print()
    
    files = os.listdir('.')
    
    for name in sorted(files):
        print('Filename: {:<25} {}'.format(
            name, fnmatch.fnmatchcase(name, pattern)))

    由于测试这个程序所用的win10系统使用的是区分大小写的文件系统,所以模式修改后不会匹配任何文件。

    1.2 过滤

    要测试一个文件名序列,可以使用filter(),它会返回与模式参数匹配的文件名列表。

    import fnmatch
    import os
    import pprint
    
    pattern = 'Demo*.py'
    print('Pattern :', pattern)
    
    files = list(sorted(os.listdir('.')))
    
    print('
    Files   :')
    pprint.pprint(files)
    
    print('
    Matches :')
    pprint.pprint(fnmatch.filter(files, pattern))

    在这个例子中,filter()返回了与这一节关联的示例源文件的文件名列表。

    1.3 转换模式

    在内部,fnmatch将glob模式转换为一个正则表达式,并使用re模块比较文件名和模式。translate()函数是将glob模式转换为正则表达式的公共API。

    import fnmatch
    
    pattern = 'Demo*.py'
    print('Pattern :', pattern)
    print('Regex   :', fnmatch.translate(pattern))

    要建立一个合法的表达式,需要对一些字符进行转义。

  • 相关阅读:
    js-html音乐播放
    CSS-实现倒影效果box-reflect
    html-屏蔽按键盘空格键是滚动条向下滚动
    html-禁用右键、键盘F12、网页上选取内容、复制、粘贴
    js-回调函数
    man bash 关于shell的应有尽有 语法、快捷键...
    source vs export AND ctrl d vs ctrl z
    技术----阳春
    限流 降级
    linux TOP
  • 原文地址:https://www.cnblogs.com/liuhui0308/p/12462208.html
Copyright © 2011-2022 走看看