使用python glob查找一个14位数的文件夹

mik*_*kec 15 python glob

我有一个包含子文件夹的文件夹,它们都是YYYYMMDDHHMMSS(时间戳)模式.

我想使用glob只选择匹配该模式的文件夹.

Mar*_*off 23

由于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']
>>>
Run Code Online (Sandbox Code Playgroud)

我利用了这样一个事实:在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']
Run Code Online (Sandbox Code Playgroud)

  • @mikec:坚持使用''[0-9]'*14`然后只接受可以用`datetime.strptime`成功解析的时间戳可能更简单,如果你*真的*需要确保所有的时间戳有效. (8认同)