Home  >  Article  >  Backend Development  >  List all files of a specific type in a directory using Python

List all files of a specific type in a directory using Python

WBOY
WBOYforward
2023-08-28 23:25:12960browse

List all files of a specific type in a directory using Python

Python's flexible features and powerful libraries make manipulating files and directories a breeze. Python helps you generate, update, and retrieve data from files and folders. A typical requirement is a directory listing of all files of a specific type. This tutorial walks you through the process using real-life examples to demonstrate Python's proficiency in file system operations.

Introduction to Python’s Os and Glob libraries

The standard Python library has many modules that can manage file system operations. The os and glob modules are two examples of well-known modules.

  • os module - Python's os module provides tools for communicating with the operating system. It provides operations for adding, deleting and browsing directories, which is very useful for file and directory operations.

  • glob moduleAnother useful tool is the glob module, which uses the Unix shell's rules to find all pathnames that match a specific pattern. Given that it supports wildcard characters such as * and ?, it's perfect for our goals.

Let's delve into the examples to better understand their usage.

Example 1: Using Os and Fnmatch modules

Here, we will use the os and fnmatch modules in Python to list every .txt file present in the directory.

import os
import fnmatch

def list_files(directory, filetype):
   for file in os.listdir(directory):
      if fnmatch.fnmatch(file, filetype):
         print(file)

list_files('/home/user/documents', '*.txt')

The os.listdir() function in this code snippet displays a list of every file and directory in the specified directory. The fnmatch module's fnmatch() function then determines whether each file matches the specified file type pattern. If the file types match, print the file name.

Example 2: Using the Glob module

Now let us use the glob module to list every .jpg image file present in the directory.

import glob

def list_files(directory, filetype):
   for file in glob.glob(f"{directory}/{filetype}"):
      print(file)

list_files('/home/user/images', '*.jpg')

The glob.glob() function is used in this example to return a list of paths that match the pathname pattern. The directory path and file type are combined in the f string. The function then prints out the .jpg files in the directory.

Example 3: Recursive search using the Glob module

Using the glob module, we can also recursively search for files of specific types in a directory and its subdirectories. For example, let's look for the all.png image file.

import glob

def list_files(directory, filetype):
   for file in glob.glob(f"{directory}/**/{filetype}", recursive=True):
      print(file)

list_files('/home/user/images', '*.png')

The ** in the path string of this code snippet instructs glob to perform a recursive search in all folders and subdirectories. Recursive functionality is enabled with the recursive=True option.

Example 4: List all Python files

You can use the os and fnmatch modules to locate and list every Python.py file in a specific directory in the following way -

import os
import fnmatch

def list_files(directory, filetype):
   for file in os.listdir(directory):
      if fnmatch.fnmatch(file, filetype):
         print(file)

list_files('/home/user/my_python_projects', '*.py')

This will list the names of all .py files in the directory.

Example 5: Recursive search using Os.walk

Additionally, we can use os.walk() to perform recursive searches. This function traverses the directory tree top-down or bottom-up to create file names.

import os
import fnmatch

def list_files(directory, filetype):
   for dirpath, dirnames, files in os.walk(directory):
      for file in files:
         if fnmatch.fnmatch(file, filetype):
            print(os.path.join(dirpath, file))

list_files('/home/user/projects', '*.txt')

Use the os.walk() function in this script to traverse the directory tree. Use the fnmatch.fnmatch() function to compare each file to the required file type, and use os.path.join() to get the full path of the matching file.

in conclusion

Many coding scenarios require listing all files of a specific type in a directory, and Python's extensive collection of modules (such as os and glob) provide an easy way to achieve this. The numerous practical examples provided in this article make it very obvious how to use these modules to list files in a directory and perform recursive searches within the directory and any subdirectories.

Being able to work with files and directories in a programming toolbox is critical. These features are convenient for organizing project files, viewing log files, and even automating system functions. Continue exploring these routines to find out more of Python's powerful file system management capabilities.

The above is the detailed content of List all files of a specific type in a directory using Python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete