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, "")
.
The pathlib is a Python module which provides an object API for working with files and directories. The pathlib is a standard module. Path is the core object to work with files.
parts : returns a tuple that provides access to the path's components. name : the path component without any directory. parent : sequence providing access to the logical ancestors of the path. stem : final path component without its suffix.
Methods of concrete path The . iterdir() method creates an iterator that lists the files randomly. Path().exists() checks whether the file/directory exists in a current path. Let's use the directory of the previous example (our current directory is /data ): In [*]: p = pathlib.
pathlib. Path (WindowsPath, PosixPath, etc.) objects are not considered PathLike : PY-30747.
In order to sum up the comments, the statements are the following:
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')
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))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With