glob模块

glob模块

  • 简介:glob模块会根据Unixshell规则,找到匹配上特定格式的所有文件和文件夹,跟windows的文件搜索功能差不多。

  • 查找文件只用到了3种匹配符:

    1. "*"匹配0个或多个字符。
    2. "?"匹配单个字符。
    3. "[]"匹配指定范围内的字符
  • glob模块并非调用一个子shell实现搜索功能,而是在内部调用了os.listdir()和fnmatch.fnmatch()。

  • 主要方法:glob.glob() ,glob.iglob() 和glob.escape()

glob()方法:

  • 描述:glob()返回所有匹配的文件路径列表(list)

  • 语法:

      glob.glob(pathname,recursive=False)
    
  • 参数:

      pathname -- 需要匹配的字符串。(该参数应尽量加上r前缀,以免发生不必要的错误)
      recursive -- 代表递归调用,与特殊通配符“**”一同使用,默认为False。在3.5版本之后,glob函数支持一个特殊的通配符“**”,该通配符可以匹配指定路径里所有文件和目录,包括子目录里的所有文件和目录。相当于递归地调用了这个函数。使用这个通配符必须加上recursive=True参数。
    
  • 返回值

    返回一个符合条件的路径的字符串列表

示例:

import glob

print("F盘下以exe结尾文件:", glob.glob("F:/*.exe"))
print("当前路径下的py文件:", glob.glob('./*.py'))
print("当前路径下以一个数字开头以.txt结尾的文件:", glob.glob('./[0-9]*.txt'))
print("当前路径下的所有文件列表:", glob.glob('*'))
print("当前路径下的所有以.txt结尾的文件:", glob.glob('*.txt'))
print("当前路径下的所有文件:", glob.glob("./*"))
print("-" * 120)

# 当前路径下的所有txt文件
for i in glob.glob("**/*.txt", recursive=True):
    print(i)

结果:

F盘下以exe结尾文件: ['F:/03-ZhiyunTrans6.4.3.3_setup.exe', 'F:/apipost3.2.3_setup_x64.exe', 'F:/Hearthstone-Setup-CN.exe', 'F:/kyzip_v3.2.2.3_rywy_008.exe', 'F:/VSCodeUserSetup-x64-1.49.2.exe', 'F:/WeGameMiniLoader.std.2.07.29.1736.exe', 'F:/XunLeiWebSetup10.1.38.890gw.exe', 'F:/知云文献翻译_023287310.exe']
当前路径下的py文件: ['.\\test1.py']
当前路径下以一个数字开头以.txt结尾的文件: ['.\\1231564.txt', '.\\4454.txt', '.\\666.txt']
当前路径下的所有文件列表: ['1231564.txt', '4454.txt', '666.txt', 'ad.txt', 'mm', 'sss.txt', 'test1.py']
当前路径下的所有以.txt结尾的文件: ['1231564.txt', '4454.txt', '666.txt', 'ad.txt', 'sss.txt']
当前路径下的所有文件: ['.\\1231564.txt', '.\\4454.txt', '.\\666.txt', '.\\ad.txt', '.\\mm', '.\\sss.txt', '.\\test1.py']
------------------------------------------------------------------------------------------------------------------------
1231564.txt
4454.txt
666.txt
ad.txt
sss.txt
mm\aaa.txt
mm\nn\nnn.txt

Process finished with exit code 0

iglob()方法

  • 描述:iglob函数是一个迭代器(或者叫做generator,生成器,发动机),规则和参数都与glob函数一致,不同的是,glob函数一次性的返回了所有的结果,而iglob函数是一个一个的返回结果。

  • 语法:

      glob.iglob(pathname,recursive=False)
    
  • 参数:与glob()一致

  • 返回值:

    一个迭代器

  • 注意:glob默认不匹配以点符号(.)开始的文件,若要匹配需要加上

示例:

import glob

s = glob.iglob("./*.txt")
print(s)
print(type(s))
print("=" * 120)
for i in s:
    print(i)

结果:

<generator object _iglob at 0x000001F83C3E1C80>
<class 'generator'>
========================================================================================================================
.\1231564.txt
.\4454.txt
.\666.txt
.\ad.txt
.\sss.txt

escape()方法

  • 描述:escape就是“离开glob规则特别符号的原有含义”的意思。它返回的是一个glob规则

  • 语法:

      glob.escape(pathname)
    
  • 参数:

      pathname -- 字符串
    
  • 返回值:

    一个忽略所有通配符的glob规则。可以用于匹配可能有特殊字符的任意字符串。

示例:

import glob

print(glob.escape('./*.txt'))

结果:

./[*].txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值