Как исключить файлы в каталоге пути, используя pathlib в Python надлежащим образом? - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть путь к паре файлов данных, скажем, data01.txt, data02.txt и так далее.Во время обработки пользователь предоставит файлы масок для данных (возможно, также с помощью внешнего инструмента).Файлы маски будут содержать строку «маска», например, data01-mask.txt.

from pathlib import Path
p = Path(C:\Windowns\test\data01.txt)
dircontent = list(p.parent.glob('*'))

Предоставляет мне список всех путей к файлам в виде Path объектов, включая потенциальные маски.Теперь я хочу список, который дает мне содержимое каталога, но не включает в себя любой файл, содержащий маску.Я попробовал этот подход , чтобы использовать необычное регулярное выражение *![mask]*, но я не могу заставить его работать.

Используя,

dircontentstr = [str(elem) for elem in x]
filtereddir = [elem.find('mask') for elem in dircontentstr if elem.find('mask')==-1]

Я могу получить желаемый результат, но глупо потом преобразовывать обратно в Path элементы.Есть ли прямой способ исключения из списка каталогов?

1 Ответ

0 голосов
/ 13 февраля 2019

Здесь нет необходимости преобразовывать что-либо в строки, так как Path объекты имеют полезные атрибуты, которые вы можете использовать для фильтрации.Посмотрите на атрибуты .name и .stem;они позволяют фильтровать объекты пути по базовому имени файла (где .stem - базовое имя без расширения):

dircontent = [path for path in p.parent.glob('*') if 'mask' not in path.stem]
...