Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用pathlib从当前路径的一部分创建新的路径对象?_Python_Pathlib - Fatal编程技术网

Python 如何使用pathlib从当前路径的一部分创建新的路径对象?

Python 如何使用pathlib从当前路径的一部分创建新的路径对象?,python,pathlib,Python,Pathlib,我想用pathlib更改路径对象的一部分 例如,如果您有一个路径对象: import pathlib path = pathlib.Path("/home/user/to/some/floder/toto.out") 如何更改文件名?并获得一个新路径,例如“/home/user/to/some/folder/other_file.dat” 或者更一般地说,我可以更改该路径的一个或多个元素吗 我可以获得路径的部分: In [1]: path.parts Out[1]: ('/', 'home',

我想用
pathlib
更改路径对象的一部分

例如,如果您有一个路径对象:

import pathlib
path = pathlib.Path("/home/user/to/some/floder/toto.out")
如何更改文件名?并获得一个新路径,例如
“/home/user/to/some/folder/other_file.dat”

或者更一般地说,我可以更改该路径的一个或多个元素吗

我可以获得路径的
部分

In [1]: path.parts
Out[1]: ('/', 'home', 'user', 'to', 'some', 'floder', 'toto.out')
因此,一个解决方法是连接所需的部分,创建一个新字符串,然后创建一个新路径,但我想知道是否有更方便的工具来实现这一点

编辑


更准确地说,它是否存在一个等价于返回路径互补部分的
path.name
str(path).replace(path.name,”)
您可以尝试使用
str.format
来获得可变的文件名

Ex:

import pathlib
filename = "other_file.dat"    #Variable. 
path = pathlib.Path("/home/user/to/some/floder/{0}".format(filename))

为了总结这些意见,声明如下:

  • 要更改文件名
  • [1]中的
    :导入路径库
    在[2]中:path=pathlib.path(“/home/user/to/some/folder/toto.out”)
    在[3]中:path.parent/“other_file.dat”
    Out[3]:PosixPath('/home/user/to/some/folder/other_file.dat')
    
  • 以更改路径中的一个零件
  • [4]中的
    :零件=列表(path.parts)
    在[5]中:部分[4]=“其他”
    在[6]中:路径库路径(*部分)
    Out[6]:PosixPath('/home/user/to/other/folder/toto.Out')
    
    是的,我可以执行类似于
    str(path).replace(path.name,”)
    的操作。但是我想知道在
    path.name
    是否有一个模拟返回互补部分。这里的“互补”是什么意思?您是指家长吗,如在
    path.parent
    ?在这种情况下,您可以只执行
    other_path=path.parent/'other_file.dat'
    Yes,这就是我想要更改文件名的原因。是否也有办法更改给定的零件?例如,我路径中的
    other
    中的
    some
    ?是。拆分路径,更改所需元素,然后再次连接路径:
    path\u parts=path.parts;路径_部分[4]=“其他”;path=path(*path\u parts)
    谢谢,如果您将
    parts
    转换为list(元组是不可变的)
    path\u parts=list(path.parts)