используйте python glob, чтобы найти папку, состоящую из 14 цифр - PullRequest
15 голосов
/ 22 апреля 2010

У меня есть папка с подпапками, которые находятся в шаблоне ГГГГММДДЧЧММСС (отметка времени).

Я хочу использовать glob для выбора только тех папок, которые соответствуют этому шаблону.

1 Ответ

22 голосов
/ 22 апреля 2010

Поскольку glob не поддерживает регулярные выражения, вам придется использовать грубую силу для создания строки совпадения. Одним из способов является использование того факта, что диапазоны символов в [] расширены:

C:\temp\py>mkdir 12345678901234

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

Я воспользовался тем, что в Python умножение строки на целое число n приводит к тому, что эта строка повторяется n раз.

Конечно, вы можете пойти дальше и поставить проверку, чтобы убедиться, что данный путь действительно является каталогом:

>>> [path for path in glob.iglob('./' + ('[0-9]' * 14))]
['.\\11223344556677', '.\\12345678901234']
>>> [path for path in glob.iglob('./' + ('[0-9]' * 14)) if os.path.isdir(path)]
['.\\12345678901234']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...