前言
今天这篇文章要分享我自己在抓取某个路径下所有档案时,很喜欢用的一个套件,觉得它使用弹性满高,有满好理解的!自从知道有这个套件后,之后抓档名都没有换过其他方式了 XD
glob 套件
根据官方文档,有这三种用法:glob.glob(pathname, *, recursive=False)
glob.iglob(pathname, *, recursive=False)
glob.escape(pathname)
这边只先介绍 glob.glob,其他应用有需要时可以再延伸研究
範例
1. 首先,为了示範方便,先来建立一些资料夹
import osimport glob# Create directoryos.mkdir(os.path.join("Folder_1")os.mkdir(os.path.join("Folder_1", "File_1.txt"))os.mkdir(os.path.join("Folder_1", "File_2.csv"))os.mkdir(os.path.join("Folder_1", "File_3.txt"))# 备注:这边其实都是建立资料夹,只是为了示範用,所以加上档名,实际上并非档案
2. 试着利用 glob.glob 来读取档案路径
先来解释一下,参数 pathname
用到的一些符号:
*
的意思就是匹配所有的内容可以自己设定要读什么档案类型,像是:.txt
, .csv
也可以再进一步针对档名的变化设定,像是:[1-2]
就是匹配 1 到 2 之间的整数数值延伸学习:如何使用正规表达式
# Find pathnames under the specified directory # 取得 Folder_1 这层里面,所有东西的路径print(glob.glob(os.path.join("Folder_1", "*"))) # 取得 Folder_1 这层里面,结尾是 .txt 的路径print(glob.glob(os.path.join("Folder_1", "*.txt")))# 取得 Folder_1 这层里面,结尾是 .csv 的路径print(glob.glob(os.path.join("Folder_1", "*.csv")))# 取得 Folder_1 这层里面,档名中有 1 或 2 的东西的路径print(glob.glob(os.path.join("Folder_1", "*[1-2]*")))# 备注# 这边利用 os.path.join 来连接指定字串形成路径,因为不同系统下的分隔符号可能不同# 可以用 os.sep 来查看,在设定路径时,也直接用符合的分隔符号来串连
输出:
['Folder_1/File_1.txt', 'Folder_1/File_3.txt', 'Folder_1/File_2.csv']['Folder_1/File_1.txt', 'Folder_1/File_3.txt']['Folder_1/File_2.csv']['Folder_1/File_1.txt', 'Folder_1/File_2.csv']
结语
透过 glob.glob
结合正规表达式
,就可以轻鬆的特定一些筛选条件,抓出想要的档案路径