python 中 fnmatch模块, textwrap 模块

发布时间 2023-06-29 18:41:56作者: michaelchengjl

python 中 fnmatch模块, textwrap 模块

fnmatch模块
查找文件
使用fnmatch来查找特定的文件,大部分情况下,使用字符串匹配查找特定的文件就能满足需求,如果需要更加灵活的字符串匹配,可以使用标准库中的fnmatch库,这个库专门用来进行文件名匹配,支持使用通配符进行文件名的匹配

1、fnmatch支持的通配符如下

# fnmatch支持的通配符如下
# *           匹配任何数量的字符
# ?           匹配单个字符
# [sep]       匹配sep中的字符
# [!sep]      匹配除了sep以为的任何字符

2、fnmatch的常用方法介绍

# fnmatch常用的方法
# fnmatch.fnmatch()    判断文件名是否符合特定的模式,区分大小写
# fnmatch.fnmatchcase()  判断文件名是否符合特定的模块,不区分大小写
# fnmatch.filter()       返回输入列表中,符合特定模式的文件名列表
# fnmatch.translate()     将通配符匹配模式转换成正则表达式

3、fnmatch.fnmatch方法介绍

for file in os.listdir("."):
    if fnmatch.fnmatch(file,"*.html"):
        print(file)
 
    elif fnmatch.fnmatch(file,"[a-z]??.py"):
        print(file,"hahah")
    elif fnmatch.fnmatch(file,"[!a-o]*"):
        print(file)
    else:
        pass

4、fnmatch.filter方法介绍

# filter方法和fnmatch一样,只是filer需要传递一个文件的列表进行,返回一个符合匹配规则的列表
print(fnmatch.filter(os.listdir("."),"*py"))

textwrap 模块

textwrap 模块提供了一些快捷函数,以及可以完成所有工作的类 TextWrapper。 如果你只是要对一两个文本字符串进行自动换行或填充,快捷函数应该就够用了;否则的话,你应该使用 TextWrapper 的实例来提高效率。

textwrap.wrap(text, width=70, **kwargs)
对 text (字符串) 中的单独段落自动换行以使每行长度最多为 width 个字符。 返回由输出行组成的列表,行尾不带换行符。

可选的关键字参数对应于 TextWrapper 的实例属性,具体文档见下。 width 默认为 70。

请参阅 TextWrapper.wrap() 方法了解有关 wrap() 行为的详细信息。
textwrap.dedent(text)
移除 text 中每一行的任何相同前缀空白符。

这可以用来清除三重引号字符串行左侧空格,而仍然在源码中显示为缩进格式。

请注意制表符和空格符都被视为是空白符,但它们并不相等:以下两行 "  hello" 和 "\thello" 不会被视为具有相同的前缀空白符。

只包含空白符的行会在输入时被忽略并在输出时被标准化为单个换行符。

例如

def test():
    # end first line with \ to avoid the empty line!
    s = '''\
    hello
      world
    '''
    print(repr(s))          # prints '    hello\n      world\n    '
    print(repr(dedent(s)))  # prints 'hello\n  world\n'

textwrap.indent(text, prefix, predicate=None)
将 prefix 添加到 text 中选定行的开头。

通过调用 text.splitlines(True) 来对行进行拆分。

默认情况下,prefix 会被添加到所有不是只由空白符(包括任何行结束符)组成的行。

例如

>>>
>>> s = 'hello\n\n \nworld'
>>> indent(s, '  ')
'  hello\n\n \n  world'
可选的 predicate 参数可用来控制哪些行要缩进。 例如,可以很容易地为空行或只有空白符的行添加 prefix:

>>>
>>> print(indent(s, '+ ', lambda line: True))
+ hello
+
+
+ world

https://www.cnblogs.com/bainianminguo/p/10708306.html

https://docs.python.org/zh-cn/3.7/library/textwrap.html