🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
In this guide, you'll explore Python's os.path module, which manipulates file and directory paths. Learn its key functions and examples for practical use.
The os.path module in Python provides functions for interacting with the file system. It is a submodule of the os module and contains functions to manipulate file paths and directories.
Table of Contents
- Introduction
- Key Functions
abspathbasenamecommonpathcommonprefixdirnameexistsexpanduserexpandvarsgetatimegetctimegetmtimegetsizeisabsisdirisfilejoinnormpathrealpathrelpathsplitsplitdrivesplitext
- Examples
- Basic Path Operations
- File and Directory Checks
- Path Manipulations
- Real-World Use Case
- Conclusion
- References
Introduction
The os.path module provides a range of functions to manipulate and query file system paths. It is particularly useful for writing cross-platform code, as it automatically handles the differences between Unix-like and Windows path conventions.
Key Functions
abspath
Returns the absolute path of a given path.
import os
print(os.path.abspath('file.txt')) # /home/user/file.txt or C:\Users\user\file.txt
basename
Returns the base name of a pathname.
print(os.path.basename('/home/user/file.txt')) # file.txt
commonpath
Returns the longest common sub-path of each pathname in the given sequence.
print(os.path.commonpath(['/home/user/file.txt', '/home/user/docs'])) # /home/user
commonprefix
Returns the longest common leading component of a list of pathnames.
print(os.path.commonprefix(['/home/user/file.txt', '/home/user/docs'])) # /home/user/
dirname
Returns the directory name of a pathname.
print(os.path.dirname('/home/user/file.txt')) # /home/user
exists
Returns True if the path exists, False otherwise.
print(os.path.exists('/home/user/file.txt')) # True or False
expanduser
Expands ~ and ~user constructs.
print(os.path.expanduser('~')) # /home/user or C:\Users\user
expandvars
Expands environment variables in a pathname.
import os
print(os.path.expandvars('$HOME/file.txt')) # /home/user/file.txt or C:\Users\user\file.txt
getatime
Returns the last access time of a path.
print(os.path.getatime('/home/user/file.txt')) # 1618300800.0 (timestamp)
getctime
Returns the metadata change time of a path.
print(os.path.getctime('/home/user/file.txt')) # 1618300800.0 (timestamp)
getmtime
Returns the last modification time of a path.
print(os.path.getmtime('/home/user/file.txt')) # 1618300800.0 (timestamp)
getsize
Returns the size of a path, in bytes.
print(os.path.getsize('/home/user/file.txt')) # 1024 (size in bytes)
isabs
Returns True if a path is absolute.
print(os.path.isabs('/home/user/file.txt')) # True
print(os.path.isabs('file.txt')) # False
isdir
Returns True if a path is an existing directory.
print(os.path.isdir('/home/user')) # True or False
isfile
Returns True if a path is an existing regular file.
print(os.path.isfile('/home/user/file.txt')) # True or False
join
Joins one or more path components intelligently.
print(os.path.join('/home/user', 'docs', 'file.txt')) # /home/user/docs/file.txt
normpath
Normalizes a pathname by collapsing redundant separators and up-level references.
print(os.path.normpath('/home/user/../user/docs//file.txt')) # /home/user/docs/file.txt
realpath
Returns the canonical path of the specified filename, resolving symbolic links.
print(os.path.realpath('/home/user/docs/file.txt')) # /home/user/docs/file.txt
relpath
Returns a relative filepath to path from the current directory or an optional start directory.
print(os.path.relpath('/home/user/docs/file.txt', '/home/user')) # docs/file.txt
split
Splits a pathname into a pair (head, tail) where tail is the last pathname component and head is everything leading up to that.
print(os.path.split('/home/user/file.txt')) # ('/home/user', 'file.txt')
splitdrive
Splits a pathname into a pair (drive, tail) where drive is the drive letter and tail is the rest of the path.
print(os.path.splitdrive('C:\\Users\\user\\file.txt')) # ('C:', '\\Users\\user\\file.txt')
splitext
Splits the pathname into a pair (root, ext) where root is the path without the extension and ext is the file extension.
print(os.path.splitext('/home/user/file.txt')) # ('/home/user/file', '.txt')
Examples
Basic Path Operations
import os
path = '/home/user/file.txt'
print(os.path.abspath(path)) # /home/user/file.txt
print(os.path.basename(path)) # file.txt
print(os.path.dirname(path)) # /home/user
print(os.path.splitext(path)) # ('/home/user/file', '.txt')
File and Directory Checks
import os
path = '/home/user/file.txt'
if os.path.exists(path):
print(f"{path} exists")
if os.path.isfile(path):
print(f"{path} is a file")
if os.path.isdir(path):
print(f"{path} is a directory")
Path Manipulations
import os
base_dir = '/home/user'
sub_dir = 'docs'
filename = 'file.txt'
full_path = os.path.join(base_dir, sub_dir, filename)
print(full_path) # /home/user/docs/file.txt
relative_path = os.path.relpath(full_path, base_dir)
print(relative_path) # docs/file.txt
normalized_path = os.path.normpath('/home/user/../user/docs//file.txt')
print(normalized_path) # /home/user/docs/file.txt
Real-World Use Case
Organizing Files by Extension
import os
def organize_files_by_extension(directory):
for filename in os.listdir(directory):
filepath = os.path.join(directory, filename)
if os.path.isfile(filepath):
extension = os.path.splitext(filename)[1][1:]
target_dir = os.path.join(directory, extension)
os.makedirs(target_dir, exist_ok=True)
os.rename(filepath, os.path.join(target_dir, filename))
organize_files_by_extension('/path/to/directory')
Conclusion
The os.path module provides a comprehensive set of functions for manipulating file system paths. It simplifies many common tasks related to file and directory operations, making code more readable and maintainable.
References
My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:
Build REST APIs with Spring Boot 4, Spring Security 7, and JWT
[NEW] Learn Apache Maven with IntelliJ IDEA and Java 25
ChatGPT + Generative AI + Prompt Engineering for Beginners
Spring 7 and Spring Boot 4 for Beginners (Includes 8 Projects)
Available in Udemy for Business
Building Real-Time REST APIs with Spring Boot - Blog App
Available in Udemy for Business
Building Microservices with Spring Boot and Spring Cloud
Available in Udemy for Business
Java Full-Stack Developer Course with Spring Boot and React JS
Available in Udemy for Business
Build 5 Spring Boot Projects with Java: Line-by-Line Coding
Testing Spring Boot Application with JUnit and Mockito
Available in Udemy for Business
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Available in Udemy for Business
Master Spring Data JPA with Hibernate
Available in Udemy for Business
Spring Boot + Apache Kafka Course - The Practical Guide
Available in Udemy for Business
Comments
Post a Comment
Leave Comment