【Python】 glob批处理模块的学习

1.什么是glob模块?

  • 在 Python 中,glob模块是一个用于文件路径名的模式匹配的工具。它使用简单的通配符规则来匹配文件和目录的路径,这些通配符规则类似于在命令行中使用的文件搜索规则。这使得在处理文件系统中的多个文件或目录时非常方便,可以快速地获取符合特定模式的文件路径列表。

2. 通配符规则

  • *(星号)通配符
  • 示例:假设在当前目录下有file1.txtfile2.txtdata.csvreport.docx这些文件。使用glob.glob('*.txt')将返回['file1.txt', 'file2.txt'],它只会匹配扩展名为.txt的文件。
  • 功能:*可以匹配任意长度(包括零长度)的字符序列。例如,*.txt表示匹配所有以.txt扩展名的文件,不管文件名的前面部分是什么。

  • ?(问号)通配符
    • 功能:?可以匹配任意单个字符。例如,file?.txt会匹配像file1.txtfile2.txt等文件名,其中?的位置可以是任意一个字符。

    • 示例:如果有file1.txtfile2.txtfileA.txtdata.txt这些文件,glob.glob('file?.txt')将返回['file1.txt', 'file2.txt', 'fileA.txt'],它匹配文件名是file后面跟着一个字符且扩展名为.txt的文件。

  • [](方括号)通配符
    • 功能:[]用于匹配方括号内指定的一组字符中的任意一个。例如,file[123].txt会匹配file1.txtfile2.txtfile3.txt

    • 示例:假设有file1.txtfile2.txtfile4.txtfileA.txt这些文件,glob.glob('file[123].txt')将返回['file1.txt', 'file2.txt'],只匹配文件名中file后面跟着123且扩展名为.txt的文件。

3.glob模块的主要函数

    • glob.glob()函数

    • 功能:该函数返回所有匹配指定模式的文件路径的列表。它接受一个表示路径模式的字符串作为参数,在当前目录以及子目录(如果模式包含目录遍历相关的部分)中搜索匹配的文件路径。
    • 示例:搜索当前目录下所有的 Python 文件:
         import glob
         python_files = glob.glob('*.py')
         print(python_files)

搜索指定目录下(例如data目录)所有的.csv文件:

         import glob
         csv_files_in_data_dir = glob.glob('data/*.csv')
         print(csv_files_in_data_dir)

glob.iglob()函数

  • 功能:这是一个生成器函数,它与glob.glob()类似,用于返回匹配指定模式的文件路径。但是,它返回的是一个生成器对象,而不是一个列表。这样在处理大量文件路径时,可以节省内存,因为生成器是按需生成元素的,而不是一次性生成所有元素。
  • 示例:
       import glob
       for file_path in glob.iglob('*.jpg'):
           print(file_path)

这个示例会逐个打印出当前目录下所有匹配*.jpg模式的文件路径,而不是将所有路径存储在一个列表中再处理。

使用glob模块的注意事项

  • 路径的相对性质glob函数所使用的路径模式是相对路径,默认是相对于当前工作目录的。如果需要指定绝对路径,需要在模式字符串中提供完整的路径信息。例如,要搜索根目录下的/var/log目录中的.log文件,可以使用glob.glob('/var/log/*.log')

  • 目录的遍历:当模式中包含目录遍历部分(如**)时,要注意性能问题。例如,**/*.txt会遍历当前目录及其所有子目录来查找.txt文件,这在目录结构复杂且文件数量众多时可能会消耗较多的时间和资源。在 Python 3.5 及以上版本中,**用于递归地匹配目录。

  • 区分大小写:在大多数操作系统中,glob模块的匹配是区分大小写的。例如,*.TXT不会匹配名为file.txt的文件,只会匹配扩展名为.TXT的文件(如果有的话)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QQ359677345

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值