2010-04-22 12 views

cevap

12

glob düzenli ifadeleri desteklemediğinden, eşleme dizesini oluşturmaya zorlamak zorundasınız. Tek yönlü genişletilir karakter [] aralıkları gerçeği yararlanmak için geçerli:

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 içinde, bir tamsayı olan bir dize çarparak o dizede n sonuç tekrar edildiğini gerçeği yararlandı n, kez. cevap için

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

Teşekkür: Tabii

, devam edin ve verilen yol bir dizin aslında olduğunu doğrulamak için bir çek koymak isteyebilirsiniz. Şimdilik bunu kullanıyordum: [0-9] [0-9] [0-9] [0-9] [0-1] [0-9] [0-3] [0-9] [ 0-2] [0-9] [0 9] [0-9] [0-6] [0-9] Tanımladığım biçim için temel olarak kuralları vardır (ayları, günleri, saatleri dakikaları sınırlar). Onların kendi aralıkları), bunu yapmanın daha iyi bir yolu olup olmadığından emin değildim. – mikec

+7

@mikec: '[0-9] '* 14' ile yapışmak daha basit olabilir ve daha sonra sadece * emin olmak için * gerekli olan * datetime.strptime' ile başarıyla ayrıştırılabilen zaman damgalarını kabul edebilir zaman damgaları geçerlidir. –

İlgili konular