2016-07-16 2 views
0

Я смотрю страницу man glob, и я не могу заставить соответствующие шаблоны работать в python. У меня это до сих пор ...python glob matching patterns

glob.glob('file.*') + glob.glob('file[0-9].*') 

и это работает, и вернуть мне список тех пор, как номера файлов о не превышает 9. Если я сделаю file100.txt это не работает, и если я пытаюсь диапазон [0-100] или [0-1000] ничего не меняет ...

Так что мой вопрос в том, как я могу сделать это совпадение любым числом .... а также как я могу объединить его в один утверждение, похоже, что это должно быть одно заявление.

ответ

3

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

import re 

file_names = [name for name in glob.glob('file*.*') if re.match(r'^file\d*\.', name] 
2

Обычное манипулирование не относится к подобным вещам. Вы не можете указать повторения определенных шаблонов символов. Вы не сможете сделать это с помощью одного вызова. Лучше всего использовать file*.txt, а затем обработать полученный список, чтобы устранить те, которые не соответствуют вашему шаблону, например, используя функции регулярных выражений в модуле re.