pathlib использует glob для поиска всех файлов с заданным основанием - PullRequest
0 голосов
/ 17 апреля 2020

В основном у меня есть рабочее решение, но, учитывая простоту pathlib, я чувствую, что делаю это неправильно.

MWE:

filename = Path('a/b/c.txt')
# I want to find all files in `a/b` called `c` with any extension, e.g: `c.pdf`

list(filename.parent.glob(f"{filename.stem}.*"))
# [PosixPath('a/b/c.txt'), PosixPath('a/b/c.pdf')]

С точки зрения пути к жизни я сделал бы что-то вроде filename.glob("*"), но это не работает (возвращает []).

Я нашел метод with_suffix в документации, но он предназначен для замены, а не для глобального поиска.

1 Ответ

1 голос
/ 19 апреля 2020

Вы можете просто использовать Path.glob("*") и понимание списка. Он будет чувствовать себя больше pythoni c.

filename = Path("a/b/c.txt")

[f for f in filename.parent.glob("*") if f.stem == filename.stem]
# [PosixPath('a/b/c.txt'), PosixPath('a/b/c.pdf')]

Кроме того, вы можете использовать Path.iterdir(), если вы просматриваете только один каталог.

filename = Path("a/b/c.txt")

[f for f in filename.parent.iterdir() if f.stem == filename.stem]
# [PosixPath('a/b/c.txt'), PosixPath('a/b/c.pdf')]
...