Open In App
Related Articles

Python | os.path.join() method

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

Os Path Module is a sub-module of the OS module in Python used for common pathname manipulation. In this article, we will learn about os.path.join() and handling file paths safely in Python OS.

Python os.path.join() Method Syntax

Syntax: os.path.join(path, *paths) 

Parameter: 

  • path: A path-like object representing a file system path. 
  • *path: A path-like object representing a file system path. It represents the path components to be joined. A path-like object is either a string or bytes object representing a path.
  • Note: The special syntax *args (here *paths) in function definitions in python is used to pass a variable number of arguments to a function. 

Return Type: This method returns a string which represents the concatenated path components. 

os.path.join() method in Python

The os.path.join() Method in Python joins one or more path components intelligently. This method concatenates various path components with exactly one directory separator (‘/’) following each non-empty part except the last path component. If the last path component to be joined is empty then a directory separator (‘/’) is put at the end. 

If a path component represents an absolute path, then all previous components joined are discarded, and joining continues from the absolute path component.

os.path.join() Function Examples and Uses Cases

Below are some examples and uses cases by which we can join file paths and handling file paths safely in Python OS.

Concatenating Path Components

In this example, the `os.path.join()` method is used to concatenate path components, effectively constructing valid paths. It ensures cross-platform compatibility by properly joining the components.

Python3

import os
 
# Path
path = "/home"
 
# Join various path components
print(os.path.join(path, "User/Desktop", "file.txt"))
 
# Path
path = "User/Documents"
 
# Join various path components
print(os.path.join(path, "/home", "file.txt"))
 
# Path
path = "/User"
 
# Join various path components
print(os.path.join(path, "Downloads", "file.txt", "/home"))

                    

Output
/home/User/Desktop/file.txt
/home/file.txt
/home

Reading and Writing Files

In this example, the os.path.join() method is utilized to form a complete file path by joining the base directory and the filename. The constructed path is then used to read the content of the file named example.txt.

example.txt

GeeksforGeeks

Python3

import os
 
# Base directory and filename
base_dir = '/home/user'
filename = 'example.txt'
 
# Construct the full path
full_path = os.path.join(base_dir, filename)
 
# Reading and writing files using the full path
with open(full_path, 'r') as file:
    content = file.read()
    print(content)

                    

Output:

GeeksforGeeks

Listing Files in a Directory

In this example, the `os.path.join()` method is employed to generate the full path for each file in the current working directory. The complete paths are then printed, allowing for a comprehensive listing of all files in the directory.

Python3

import os
 
# Current working directory
current_dir = os.getcwd()
 
# List files in the current directory
files_in_dir = os.listdir(current_dir)
 
# Iterate over files and print their full paths
for file_name in files_in_dir:
    file_path = os.path.join(current_dir, file_name)
    print(file_path)

                    

Output
/home/guest/sandbox/1e914974-f313-477e-a710-2057a0037607.in
/home/guest/sandbox/driver
/home/guest/sandbox/Solution.py

Iterating Over Paths with a For Loop 

In this example, the `os.path.join()` method is utilized within a loop to dynamically create the full path for each file name listed. The constructed paths are then printed to indicate the processing of each respective file.

Python3

import os
 
# List of file names
names = ['file1.txt', 'file2.txt', 'file3.txt']
 
# Iterate over file names and process each file
for file_name in names:
 
    file_path = os.path.join('/home/user', file_name)
    print(f"Processing file: {file_path}")

                    

Output
Processing file: /home/user/file1.txt
Processing file: /home/user/file2.txt
Processing file: /home/user/file3.txt



Last Updated : 15 Jan, 2024
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads