How do you get a directory listing sorted by their name in Python?

When working with large directories, managing files and folders often requires listing them in a specific order. Sorting items by their names makes navigation and processing much easier and more intuitive.

Python simplifies this task with built-in modules such as os and pathlib, which allow developers to fetch and organize directory contents with just a few lines of code. In this article, we will explore different methods to retrieve and sort directory listings alphabetically.

Using os.listdir() with sorted()

The os.listdir() method combined with sorted() function is the most straightforward approach to retrieve and alphabetically sort directory contents. The os.listdir() method returns a list of all entries (files and folders) in a directory, while sorted() arranges them in alphabetical order.

Example

Here's how to list and sort directory contents using os.listdir() and sorted() ?

import os

# Create a sample directory structure for demonstration
os.makedirs('sample_dir', exist_ok=True)
sample_files = ['zebra.txt', 'apple.txt', 'banana.txt', 'cat.txt']

for file in sample_files:
    with open(f'sample_dir/{file}', 'w') as f:
        f.write('sample content')

# Get and sort directory contents
directory = 'sample_dir'
items = os.listdir(directory)
sorted_items = sorted(items)

print("Sorted directory contents:")
for item in sorted_items:
    print(item)
Sorted directory contents:
apple.txt
banana.txt
cat.txt
zebra.txt

Using os.path.join() for Full Paths

While os.listdir() returns only filenames, you might need full paths. The os.path.join() function combines directory and file names correctly across different operating systems.

Example

This example shows how to get full paths sorted alphabetically by filename ?

import os

directory = 'sample_dir'

# Get full paths and sort by basename
full_paths = [os.path.join(directory, item) for item in os.listdir(directory)]
sorted_paths = sorted(full_paths, key=lambda x: os.path.basename(x))

print("Sorted full paths:")
for path in sorted_paths:
    print(path)
Sorted full paths:
sample_dir/apple.txt
sample_dir/banana.txt
sample_dir/cat.txt
sample_dir/zebra.txt

Using pathlib.Path.iterdir()

The pathlib module provides a modern, object-oriented approach to filesystem operations. The Path.iterdir() method returns Path objects representing directory contents, which can be easily sorted using the .name attribute.

Example

Here's how to use pathlib for directory listing and sorting ?

from pathlib import Path

directory = Path('sample_dir')

# List and sort contents by name
sorted_items = sorted(directory.iterdir(), key=lambda x: x.name)

print("Sorted items using pathlib:")
for item in sorted_items:
    print(item.name)
Sorted items using pathlib:
apple.txt
banana.txt
cat.txt
zebra.txt

Case-Insensitive Sorting

By default, Python sorts with case sensitivity, where uppercase letters come before lowercase letters. For case-insensitive sorting, use the .lower() method in the sorting key.

Example

This example demonstrates case-insensitive sorting ?

from pathlib import Path

# Create files with mixed case
mixed_case_files = ['Apple.txt', 'banana.txt', 'Cat.txt', 'zebra.txt']
for file in mixed_case_files:
    Path(f'sample_dir/{file}').touch()

directory = Path('sample_dir')

# Case-insensitive sorting
sorted_items = sorted(directory.iterdir(), key=lambda x: x.name.lower())

print("Case-insensitive sorted items:")
for item in sorted_items:
    print(item.name)
Case-insensitive sorted items:
Apple.txt
apple.txt
banana.txt
Cat.txt
cat.txt
zebra.txt

Comparison of Methods

Method Returns Best For
os.listdir() + sorted() List of strings Simple filename sorting
os.path.join() + sorted() Full path strings When full paths are needed
pathlib.Path.iterdir() + sorted() Path objects Modern, object-oriented approach

Conclusion

Use os.listdir() with sorted() for simple filename sorting, or pathlib.Path.iterdir() for a more modern approach. For case-insensitive sorting, add .lower() to the sorting key function.

Updated on: 2026-03-24T18:27:52+05:30

22K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements