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

Question:

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, "").

Asked By: Ger

||

Answers:

You can try using str.format to have variable filenames

Ex:

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

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')
Answered By: Ger
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.