📜  如何遍历文件夹中的图像 python (1)

📅  最后修改于: 2023-12-03 15:24:57.088000             🧑  作者: Mango

如何遍历文件夹中的图像 Python

在实际应用中,我们经常需要处理一个文件夹中的图像,例如,将这些图像读入内存进行分析、处理等工作。本文将介绍如何使用 Python 遍历文件夹中的图像。

1. 获取文件夹中的文件列表

Python 中提供了 os 模块来获取文件夹中的文件列表。下面是一个示例代码,获取指定文件夹中的所有文件:

import os

def get_file_list(folder_path):
    # 获取文件夹中的所有文件
    files = os.listdir(folder_path)
    file_list = []
    for file in files:
        file_path = os.path.join(folder_path, file)
        if os.path.isfile(file_path):
            file_list.append(file_path)
    return file_list

在上述代码中,我们使用 os.listdir() 函数获取指定文件夹中的所有文件,然后使用 os.path.join() 函数将文件夹路径和文件名合并,得到文件路径。接着,我们使用 os.path.isfile() 函数判断得到的路径是否对应一个文件,如果是文件,则将其加入文件列表中并返回。

2. 判断文件类型

由于我们只需要处理图像文件,因此需要判断文件类型。Python 中提供了 imghdr 模块来获取文件的类型。下面是一个示例代码:

import imghdr

def is_image(file_path):
    # 判断文件是否为图像文件
    return imghdr.what(file_path) is not None

在上述代码中,我们使用 imghdr.what() 函数来获取文件的类型,如果不是图像文件,则返回 None,因此我们判断返回值是否为 None 来确定文件是否为图像文件。

3. 将图像文件读入内存

图像文件读入内存的操作,可以使用 Pillow 模块来实现。Pillow 是 Python 中的一个图像处理库,提供了丰富的图像处理函数。下面是一个示例代码:

from PIL import Image

def read_image(file_path):
    # 读取图像文件并返回 Image 对象
    try:
        img = Image.open(file_path)
        return img
    except:
        return None

在上述代码中,我们使用 PIL 中的 Image.open() 函数来读取图像文件,并返回一个 Image 对象。由于读取图像文件可能会失败,因此我们使用 try...except... 语句来处理异常,当读取图像文件失败时,返回 None。

4. 完整代码示例

下面是将上述代码整合在一起的完整代码示例:

import os
import imghdr
from PIL import Image

def get_file_list(folder_path):
    # 获取文件夹中的所有文件
    files = os.listdir(folder_path)
    file_list = []
    for file in files:
        file_path = os.path.join(folder_path, file)
        if os.path.isfile(file_path):
            file_list.append(file_path)
    return file_list

def is_image(file_path):
    # 判断文件是否为图像文件
    return imghdr.what(file_path) is not None

def read_image(file_path):
    # 读取图像文件并返回 Image 对象
    try:
        img = Image.open(file_path)
        return img
    except:
        return None

if __name__ == '__main__':
    folder_path = '/path/to/folder'
    file_list = get_file_list(folder_path)
    for file_path in file_list:
        if is_image(file_path):
            img = read_image(file_path)
            if img is not None:
                # 对图像进行处理
                pass

在上述代码中,我们首先使用 get_file_list() 函数获取指定文件夹中的所有文件,然后使用 is_image() 函数判断文件是否为图像文件,最后使用 read_image() 函数读取图像文件并返回 Image 对象。在主函数中,我们遍历文件夹中的文件,对图像文件进行处理。

5. 总结

本文介绍了如何使用 Python 遍历文件夹中的图像。我们使用 os 模块获取文件夹中的文件列表,使用 imghdr 模块判断文件类型,使用 Pillow 模块读取图像文件并返回 Image 对象。在实际应用中,可以根据需要,对读入的图像进行处理、分析等工作。