Search code examples
pythonpathlib

How to make a new Path object from parts of a current path with pathlib?


I would like to change a part of a Path object with pathlib.

For example if you have a Path object:

import pathlib
path = pathlib.Path("/home/user/to/some/floder/toto.out")

How can I change the file name ? And get a new path with for example "/home/user/to/some/folder/other_file.dat" ?

Or more generally, one can I change one or several elements of that path ?

I can get the parts of the path:

In [1]: path.parts
Out[1]: ('/', 'home', 'user', 'to', 'some', 'floder', 'toto.out')

Thus, a workaround is to join the needed parts, make a new string and then a new path, but I wonder if there is a more convenient tool to do that.

EDIT

To be more precise, does it exist an equivalent to path.name that return the complementary part of the path : str(path).replace(path.name, "").


Solution

  • In order to sum up the comments, the statements are the following:

    1. In order to change the file name
    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')
    
    
    1. In order to change one part in the path
    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')