2010-04-22 9 views

Antwort

12

Da glob nicht reguläre Ausdrücke unterstützen, werden Sie Brute-Force haben die Erstellung der Match-String. Eine Möglichkeit ist, den Vorteil der Tatsache zu ziehen, daß Zeichenbereiche in [] erweitert werden:

C:\temp\py>mkdir 123456789

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)) 
['.\\123456789'] 
>>> 

I nutzte die Tatsache, dass in Python, Multiplizieren eine Zeichenkette mit einer ganzen Zahl n Ergebnisse in dieser Zeichenkette wiederholt werden n mal.

Natürlich sollten Sie voran gehen und in einer Kontrolle zu setzen, um sicherzustellen, dass der angegebene Pfad ist eigentlich ein Verzeichnis:

>>> [path for path in glob.iglob('./' + ('[0-9]' * 14))] 
['.\\11223344556677', '.\\123456789'] 
>>> [path for path in glob.iglob('./' + ('[0-9]' * 14)) if os.path.isdir(path)] 
['.\\123456789'] 
+0

Danke für die Antwort. Denn jetzt war ich mit dieser: [0-9] [0-9] [0-9] [0-9] [0-1] [0-9] [0-3] [0-9] [ 0-2] [0-9] [0-2] [0-9] [0-6] [0-9] , die im Grunde die Regeln für das Format habe ich beschrieben (Begrenzung Monate, Tage, Stunden Minuten ihre jeweiligen Bereiche), ich war mir nur nicht sicher, ob es einen besseren Weg gab, es zu tun. – mikec

+7

@mikec: Es könnte einfacher sein zu halten mit ' '[0-9] * 14' und akzeptiert nur die Zeitstempel, die erfolgreich mit' datetime.strptime' analysiert werden können, wenn Sie * wirklich * müssen, dass alle, um sicherzustellen, Die Zeitstempel sind gültig. –