2010-04-22 24 views

回答

12

由於glob不支持正則表達式,因此您必須蠻力創建匹配字符串。一種方法是利用這一性質在[]範圍的事實優勢展開:

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'] 
>>> 

我注意到這一事實的優勢,在Python中,字符串乘以一個整數被重複ñ導致該字符串n次。

當然,你可能想繼續前進,放在一個檢查,以驗證給定的路徑實際上是一個目錄:

>>> [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

感謝您的答覆。現在我正在使用這個: [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] 它基本上具有我描述的格式規則(限制月,日,小時分鐘到他們各自的範圍),我只是不確定是否有更好的方法來做到這一點。 – mikec 2010-04-22 16:51:08

+7

@mikec:堅持使用''[0-9]'* 14'可能會更簡單,然後只接受可以用'datetime.strptime'成功分析的時間戳,如果您確實需要確保所有時間戳時間戳有效。 – 2010-04-22 16:57:35

相關問題