如何使用pathlib拼接Python Path对象与变量且不添加斜杠?
问题
现有以下代码:
>>> file = 'somefile.xyz' >>> p = Path('/Some/folder/prefix_')
使用Path的/运算符执行:
>>> print(p / file)
得到结果:
/Some/folder/prefix_/somefile.xyz
但实际需要的结果是:
/Some/folder/prefix_somefile.xyz
如何通过pathlib实现该需求?
解决方案
可以通过以下两种方式实现:
方法一:基于父目录拼接新文件名
提取p的父目录,将p的名称(即prefix_)与目标文件名直接拼接后,作为新的文件名关联到父目录下:
from pathlib import Path file = 'somefile.xyz' p = Path('/Some/folder/prefix_') result = p.parent / (p.name + file) print(result) # 输出: /Some/folder/prefix_somefile.xyz
方法二:使用with_name方法替换文件名
利用Path对象的with_name方法,直接将原有名称与目标文件名拼接后作为新名称替换:
from pathlib import Path file = 'somefile.xyz' p = Path('/Some/folder/prefix_') result = p.with_name(p.name + file) print(result) # 输出: /Some/folder/prefix_somefile.xyz
说明
原代码中p指向的是路径节点prefix_,使用/运算符会将file作为该节点的子路径,而我们需要的是将prefix_与file合并为同一个文件名,因此需要通过提取原有名称并拼接的方式生成新的路径节点。
内容的提问来源于stack exchange,提问作者Sjieke
相关产品推荐
相关产品推荐

