YYYYMMDDHHMMSS (zaman damgası) modelinde alt klasörlere sahip bir klasör var.14 basamaklı bir sayı bulmak için python glob kullanın
Yalnızca bu şablonla eşleşen klasörleri seçmek için glob kullanmak istiyorum.
YYYYMMDDHHMMSS (zaman damgası) modelinde alt klasörlere sahip bir klasör var.14 basamaklı bir sayı bulmak için python glob kullanın
Yalnızca bu şablonla eşleşen klasörleri seçmek için glob kullanmak istiyorum.
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']
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
@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. –