pathlib is around since Python 3.4 but I must confess that I’ve started to use it a short time ago. For those who are listening this name for the first time,
pathlib is an Object-oriented filesystem paths module; in other words, a module with few classes to help you to manipulate paths in a pratical way.
Each class has a proper use and if you wanna dive into it, I suggest to take a look in the docs. This post is introductory (and at the same time, a reminder to myself :)).
Let the games begin!
from pathlib import Path
If you would like to create a new instance of
Path (or represent a path), you just have to add the path to the object constructor:
>>> Path('/home/ana.gomes') PosixPath('/home/ana.gomes')
In this case is returning a
PosixPath that represents a no-Windows file system. If your OS is Windows, it will return a
WindowsPath. Both classes implements concrete paths.
To concatenate, it’s much better now:
>>> myfile = Path.home() / 'myfile.txt' >>> myfile PosixPath('/Users/ana.gomes/myfile.txt')
You just need the slashs!
Path instance, is possible to have access to many handy methods, like:
Path.cwd() Path.is_dir() Path.is_file() Path.exists() Path.samefile() Path.owner() Path.home() Path.parts()
If you are wondering about a file extension, you can use
suffixes (for a list of it).
Another cool thing is to know the relative path given a directory. For instance:
>>> myfile = Path.home() / 'myfile.txt' >>> myfile PosixPath('/Users/ana.gomes/myfile.txt') >>> myfile.relative_to('/Users/') PosixPath('ana.gomes/myfile.txt')
Last but not least, how to list directories and walk through it. To list, we can use
>>> list((Path.home() / 'Documents').glob('**/*.*')) [PosixPath('/Users/ana.gomes/Documents/.localized'), PosixPath('/Users/ana.gomes/Documents/myfile.txt')]
**, it will walk recursivelly.
To iterate, use
>>> list((Path.home() / 'personal-workspace').iterdir()) [PosixPath('/Users/ana.gomes/personal-workspace/.DS_Store'), PosixPath('/Users/ana.gomes/personal-workspace/dotfiles'), PosixPath('/Users/ana.gomes/personal-workspace/pass2dashlane'), PosixPath('/Users/ana.gomes/personal-workspace/speakerfight'), PosixPath('/Users/ana.gomes/personal-workspace/sandbox'), PosixPath('/Users/ana.gomes/personal-workspace/blog-engine'), PosixPath('/Users/ana.gomes/personal-workspace/looong'), PosixPath('/Users/ana.gomes/personal-workspace/20-texts-in-my-pocket')]
In this case, it’s not possible to walk recursivelly.
Well, this was the first micro post (a little drop) about Python. If you know about other cool ways to use
Pathlib, just drop a line. :) See ya!
comments powered by Disqus