基本上我有一个有效的解决方案,但考虑到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')]
从pathlib的角度来看,我会做一些类似filename.glob("*")
的事情,但它不起作用(返回[]
(。
我在文档中找到了with_suffix
方法,但它是用于替换的,而不是全局查找。
您只需使用Path.glob("*")
和列表理解即可。这会让人感觉更像蟒蛇。
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')]