如何使用 pathlib 从当前路径的一部分创建一个新的 Path 对象?
How to make a new Path object from parts of a current path with pathlib?
我想用 pathlib
更改路径对象的一部分。
例如,如果您有一个 Path 对象:
import pathlib
path = pathlib.Path("/home/user/to/some/floder/toto.out")
如何更改文件名?并获得一条新路径,例如 "/home/user/to/some/folder/other_file.dat"
?
或者更一般地说,我可以更改该路径的一个或多个元素吗?
我可以得到路径的parts
:
In [1]: path.parts
Out[1]: ('/', 'home', 'user', 'to', 'some', 'floder', 'toto.out')
因此,一种解决方法是连接所需的部分,创建一个新字符串,然后创建一个新路径,但我想知道是否有更方便的工具可以做到这一点。
编辑
更准确地说,是否存在与 path.name
等价的 return 路径的补充部分:str(path).replace(path.name, "")
.
您可以尝试使用 str.format
来获得可变文件名
例如:
import pathlib
filename = "other_file.dat" #Variable.
path = pathlib.Path("/home/user/to/some/floder/{0}".format(filename))
为了总结评论,陈述如下:
- 为了更改文件名
In [1]: import pathlib
In [2]: path = pathlib.Path("/home/user/to/some/folder/toto.out")
In [3]: path.parent / "other_file.dat"
Out[3]: PosixPath('/home/user/to/some/folder/other_file.dat')
- 为了改变路径中的一部分
In [4]: parts = list(path.parts)
In [5]: parts[4] = "other"
In [6]: pathlib.Path(*parts)
Out[6]: PosixPath('/home/user/to/other/folder/toto.out')
我想用 pathlib
更改路径对象的一部分。
例如,如果您有一个 Path 对象:
import pathlib
path = pathlib.Path("/home/user/to/some/floder/toto.out")
如何更改文件名?并获得一条新路径,例如 "/home/user/to/some/folder/other_file.dat"
?
或者更一般地说,我可以更改该路径的一个或多个元素吗?
我可以得到路径的parts
:
In [1]: path.parts
Out[1]: ('/', 'home', 'user', 'to', 'some', 'floder', 'toto.out')
因此,一种解决方法是连接所需的部分,创建一个新字符串,然后创建一个新路径,但我想知道是否有更方便的工具可以做到这一点。
编辑
更准确地说,是否存在与 path.name
等价的 return 路径的补充部分:str(path).replace(path.name, "")
.
您可以尝试使用 str.format
来获得可变文件名
例如:
import pathlib
filename = "other_file.dat" #Variable.
path = pathlib.Path("/home/user/to/some/floder/{0}".format(filename))
为了总结评论,陈述如下:
- 为了更改文件名
In [1]: import pathlib
In [2]: path = pathlib.Path("/home/user/to/some/folder/toto.out")
In [3]: path.parent / "other_file.dat"
Out[3]: PosixPath('/home/user/to/some/folder/other_file.dat')
- 为了改变路径中的一部分
In [4]: parts = list(path.parts)
In [5]: parts[4] = "other"
In [6]: pathlib.Path(*parts)
Out[6]: PosixPath('/home/user/to/other/folder/toto.out')