使用python glob查找14位数字的文件夹
我有一个文件夹,里面有一些子文件夹,这些子文件夹的名字都是按照“年年年年月月日日时时时分分秒秒”的格式命名的,也就是时间戳。
我想用一个叫做glob的工具,只选择那些符合这个命名规则的子文件夹。
1 个回答
34
因为glob
不支持正则表达式,所以你需要用一种比较直接的方法来创建匹配字符串。一个方法是利用字符范围在[]
中会被展开的特性:
C:\temp\py>mkdir 12345678901234
C:\temp\py>C:\Python26\python.exe
Python 2.6.2 Stackless 3.1b3 060516 (release26-maint, Apr 14 2009, 21:19:36) [M
C v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import glob
>>> glob.glob('./' + ('[0-9]' * 14))
['.\\12345678901234']
>>>
我利用了Python中一个有趣的特性,就是用一个整数n去乘一个字符串,会得到这个字符串重复n次的结果。
当然,你可能还想加一个检查,确认给定的路径确实是一个目录:
>>> [path for path in glob.iglob('./' + ('[0-9]' * 14))]
['.\\11223344556677', '.\\12345678901234']
>>> [path for path in glob.iglob('./' + ('[0-9]' * 14)) if os.path.isdir(path)]
['.\\12345678901234']