>>> from env_helper import info; info()
页面更新时间: 2023-06-30 19:18:46
运行环境:
Linux发行版本: Debian GNU/Linux 12 (bookworm)
操作系统内核: Linux-6.1.0-9-amd64-x86_64-with-glibc2.36
Python版本: 3.11.2
3.4. glob
模块¶
简介Glob 是一种文件匹配模式,全称 global,它起源于 Unix 的 bash shell
中, 比如在 linux 中常用的 mv *.txt tmp/
中,*.txt
就使用到了这种模式。
在计算机编程中,经常需要对文件或者文件夹进行操作,那么会经常涉及到一些文件或者文件夹的匹配操作,
此时就是 Glob 模式大显身手的时候,比如上面的 m
v 命令。
大家最熟悉的应用场景就是 git 中的 .gitignore 中的表达式了,它就是 Glob
模式的一个典型用法。
Glob 表达式工具
Smart-tools开发了一款Glob表达式在线验证工具,可以轻松验证Glob语句是否正确。
在 Python 中内置了 glob
模块,可以实现对文件与文件夹名称的获取。但是由于它是基于字符串方式实现的,
所以更推荐 pathlib
模块。
3.4.1. glob
函数¶
>>> from glob import glob
>>> wfiles = glob('*', recursive=True)
>>> print(wfiles)
['xx_new2.zip', 'sec05_practice1.ipynb', 'sec02_pathlib.ipynb', 'sec01_shutil.ipynb', 'sec02_walktree.ipynb', 'sec07_libarchive.ipynb', 'sec03_zipfile.ipynb', 'new.zip', 'new', 'sec06_practice2.ipynb', 'xx_out', 'xx_news.zip', 'xx_new.zip', 'sec04_renam.ipynb', 'chapter.ipynb', 'sec02-glob.ipynb']
要注意匹配模式中 **
的使用。即使不指定嵌套模式,但是根据匹配机制,会匹配到子文件夹。
>>> from glob import glob
>>> wfiles = glob('**', recursive=True)
>>> print(wfiles)
['xx_new2.zip', 'sec05_practice1.ipynb', 'sec02_pathlib.ipynb', 'sec01_shutil.ipynb', 'sec02_walktree.ipynb', 'sec07_libarchive.ipynb', 'sec03_zipfile.ipynb', 'new.zip', 'new', 'new/hello1.txt', 'new/hello2.txt', 'new/foo', 'new/foo/foo.txt', 'sec06_practice2.ipynb', 'xx_out', 'xx_out/new', 'xx_out/new/hello1.txt', 'xx_out/new/hello2.txt', 'xx_news.zip', 'xx_new.zip', 'sec04_renam.ipynb', 'chapter.ipynb', 'sec02-glob.ipynb']
3.4.2. iglob
函数¶
>>> from glob import iglob
>>> entities = iglob('*.txt')
>>> for entity in entities:
>>> print(entity)