Stop Using Python’s OS Library! Switch to Pathlib Instead! 🚀
Learn why pathlib is the modern, Pythonic way to handle file paths efficiently.

Ditch os – embrace pathlib!
Stop Using Python’s OS Library! Switch to Pathlib Instead! 🚀
When working with file paths and directories in Python, most developers rely on the os module. But there’s a better, more modern, and Pythonic way — Pathlib!
In this article, we’ll explore why Pathlib is superior to the os module and how you can start using it to write cleaner, more efficient code.
The Problem with the OS Module
The os
module has been around for a long time and is widely used for file and directory operations. However, it has some drawbacks:
- String-Based Paths — You have to deal with raw strings and manual concatenation.
- Inconsistent Across OS — Different path separators (
/
vs\
) for Windows and Unix. - Verbose Code – Simple operations require multiple function calls.
Example using os module:
import os
# Get the absolute path
file_path = os.path.join(os.getcwd(), "data", "file.txt")
# Check if file exists
if os.path.exists(file_path):
print(f"{file_path} exists!")
While this works, but it’s not the most readable or efficient way to handle paths.
Pathlib: The Modern Solution
The Pathlib module, introduced in Python 3.4, provides an object-oriented way to work with paths. Instead of using raw strings, you get Path objects that behave more naturally.
Example using Pathlib:
from pathlib import Path
# Get the absolute path
file_path = Path.cwd() / "data" / "file.txt"
# Check if file exists
if file_path.exists():
print(f"{file_path} exists!")
This is cleaner, more readable, and cross-platform compatible!
5 Pathlib Features You Should Start Using!
1. Create and Manage Directories
Instead of using os.mkdir()
or os.makedirs()
, use Pathlib’s mkdir()
.
dir_path = Path("new_folder")
dir_path.mkdir(parents=True, exist_ok=True) # Creates folder if it doesn’t exist
This will handles parent directories automatically and prevents errors.
2. List All Files in a Directory
With os.listdir()
, you get file names as strings. With Pathlib, you get Path objects that are easier to work with.
folder = Path("data")
files = [f for f in folder.iterdir() if f.is_file()]
print(files)
This will returns file paths as objects, allowing direct file operations.
3. Read and Write Files Easily
Forget open()
, read()
, and write()
. Pathlib makes file handling super simple.
file_path = Path("data.txt")
# Write to file
file_path.write_text("Hello, Pathlib!")
# Read file contents
print(file_path.read_text())
There is no need for open()
—cleaner and more intuitive syntax.
4. Get File Name, Extension, and Parent Directory
Pathlib provides built-in attributes for working with file paths.
file_path = Path("/home/user/docs/report.pdf")
print(file_path.name) # report.pdf
print(file_path.stem) # report
print(file_path.suffix) # .pdf
print(file_path.parent) # /home/user/docs
There is no need to manually split strings — just use intuitive attributes.
5. Check File Type and Metadata
Pathlib lets you check file types and retrieve metadata easily.
file = Path("data.txt")
if file.is_file():
print("It’s a file!")
if file.is_dir():
print("It’s a directory!")
print("File size:", file.stat().st_size, "bytes")
There is no need for os.path.isfile()
or os.stat()
—everything is built-in.
Final Thoughts — Switch to Pathlib Today!
If you’re still using the os
module for path handling, now is the time to switch! Pathlib makes file and directory management easier, cleaner, and more Pythonic.
Next time if you work with files and directories, ditch the os
module and use Pathlib instead!
Have you tried Pathlib yet? Let me know in the comments! 👇
