pathlib standard library in Python just recently. It is a full set of classes, methods, properties and operators that make it very easy to work with files, directories and paths in operating system-independent way. You all do remember that not all filesystems use / (slash) as the path separator…?
I had a specific task at hand: reading a configuration file from the user’s home directory. I could have used the
os standard library and fetch the
HOME environment variable and then concatenate the
HOME value with “
/ipam.cfg” but here is what I did:
>>> from pathlib import Path >>> Path.cwd() # where I am currently PosixPath('/tmp') >>> Path.home() # what is my home directory PosixPath('/home/markku') >>> config_file = Path.home() / "ipam.cfg" >>> print(config_file) /home/markku/ipam.cfg >>>
Note the use of “/” operator here: It has been specified in the
Path class and it is used to combine the path components.
What is nice is that it is OS-independent. See the same in Windows:
>>> from pathlib import Path >>> Path.cwd() WindowsPath('C:/') >>> Path.home() WindowsPath('C:/Users/Markku') >>> print(Path.home() / "ipam.cfg") C:\Users\Markku\ipam.cfg >>>
The reverse operations are possible as well without hardcoding slashes:
>>> config_file PosixPath('/home/markku/ipam.cfg') >>> config_file.parts ('/', 'home', 'markku', 'ipam.cfg') >>>
The above means that you can access the components of the path object safely without manual string parsing operations.
And this was just scratching the surface of the
pathlib library, you may find also other useful features for your applications.
So: Please do not try to handle your paths manually by concatenating or splitting by slashes (forward slashes or backslashes) but check
Also, if you are writing functions or methods that currently take path arguments as strings, make sure to also enable and test handling of
Path classes introduced in