Étant donné que glob
ne prend pas en charge les expressions régulières, vous devrez forcer la création de la chaîne de correspondance. Une façon est de tirer parti du fait que le caractère est compris dans []
sont étendues:
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']
>>>
je profite du fait que dans le python, en multipliant une chaîne avec un nombre entier n résultats dans cette chaîne étant répétées n fois.
Bien sûr, vous voudrez peut-être aller de l'avant et de mettre un chèque pour vérifier que le chemin donné est en fait un répertoire:
>>> [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']
Merci pour la réponse. Pour l'instant je l'utilisais: [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] Qui a essentiellement les règles pour le format que j'ai décrit (limiter les mois, jours, heures minutes à leurs gammes respectives), je n'étais pas sûr s'il y avait une meilleure façon de le faire. – mikec
@mikec: Il peut être plus simple de s'en tenir à ''[0-9]' * 14' et de n'accepter que les horodatages qui peuvent être analysés avec' datetime.strptime', si vous avez vraiment besoin de vous assurer que tous les horodatages sont valides. –