是否有一种惯用的方式使用Python添加扩展';什么是Pathlib?
我正在使用Python的Pathlib,我想采用类似是否有一种惯用的方式使用Python添加扩展';什么是Pathlib?,python,python-3.x,pathlib,Python,Python 3.x,Pathlib,我正在使用Python的Pathlib,我想采用类似 p = Path('/path/to/foo') 然后尝试几个不同的扩展。我能行 for ext in ['.txt', '.md', '.note'] filename = Path(str(p) + ext) 但这感觉有点尴尬。有更好的方法吗?该方法将返回具有不同扩展名的新路径,可以更改现有扩展名,也可以添加新扩展名。文档中的示例: >>> p = PureWindowsPath('c:/Downloads/
p = Path('/path/to/foo')
然后尝试几个不同的扩展。我能行
for ext in ['.txt', '.md', '.note']
filename = Path(str(p) + ext)
但这感觉有点尴尬。有更好的方法吗?该方法将返回具有不同扩展名的新路径,可以更改现有扩展名,也可以添加新扩展名。文档中的示例:
>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_suffix('.bz2')
PureWindowsPath('c:/Downloads/pathlib.tar.bz2')
>>> p = PureWindowsPath('README')
>>> p.with_suffix('.txt')
PureWindowsPath('README.txt')
在您的情况下,p.with_suffix(ext)
可以完成这项工作
对于需要在任何现有后缀之后添加后缀而不是删除现有后缀的情况,可以使用
p.with_suffix(p.suffix+ext)
。不过,这有点笨重,我不知道我是否更喜欢它而不是Path(str(p)+ext)
您可能会使用pathlib3x-它提供了一个最新的(在编写本答案Python3.10.a0之日)Python3.6或更高版本的PythonPathLib的后端口,以及一些附加函数,如append\u suffix
>>> python -m pip install pathlib3x
>>> import pathlib3x as pathlib
>>> pathlib.Path('some_path').append_suffix('.ext')
PosixPath('some_path.ext')
>>> pathlib.Path('some_path.ext.ext2').append_suffix('.ext3')
PosixPath('some_path.ext.ext2.ext3')
>>> pathlib.Path('some_path.ext').append_suffix('.tar.gz')
PosixPath('some_path.ext.tar.gz')
您可以在或上找到它
免责声明:我是pathlib3x库的作者。也许你可以使用endswith(),但我并不觉得尴尬。这正是我想要的-它甚至在
foo.txt
的情况下替换后缀,如果我用后缀('.md')替换,那么它将返回foo.md
。杰出的(我还在页面上搜索“ext”或“extension”,这显然是我错过的原因)不错,但是如果你不想替换现有的后缀怎么办。返回路径(str(Path)+“.xyz”)?@MathieuLongtin:That,或者p.with_后缀(p.suffix+'.xyz')
。这样更好!不太好,但更好。