Исключая файлы в glob.glob () - PullRequest
2 голосов
/ 28 января 2020

У меня есть текстовые файлы в папке, мне нужно перебрать и извлечь данные из python. Чтобы получить все пути, я использую glob.glob (), за исключением того, что мне нужно исключить все файлы, которые имеют «ER» внутри его имени. Посмотрев вокруг, я нашел команду [! _], Однако она не работает. Ниже мой точный код, который все еще возвращает файлы ER.

files = glob.glob('*[!ER]*.txt')

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Если у вас есть список файлов, вы можете использовать его для фильтрации и удаления любых файлов, содержащих «ER».

files = [f for f in files if 'ER' not in f]
1 голос
/ 30 января 2020

Существуют другие библиотеки, которые могут делать исключения. Например, wcmatch (полное раскрытие, я его автор) позволяет использовать шаблоны исключений (при включении с помощью флага). Шаблоны исключения даются вместе с обычными шаблонами, и он фильтрует возвращаемый список файлов:

from wcmatch import glob
glob.glob(['*.txt', '!*ER*.txt'], flags=glob.N)

Вот пример из реальной жизни:

from wcmatch import glob
>>> glob.glob(['*.md'], flags=glob.N)
['LICENSE.md', 'README.md']
>>> glob.glob(['*.md', '!*EA*.md'], flags=glob.N)
['LICENSE.md']
...