用python遍历一个文件数量在不断增加的文件夹中的所有文件

如何用python遍历一个文件夹中的所有图片,并且文件夹中的图片还会不断增加,并且不重复遍历。设图片序号为1.jpg,2.jpg,3.jpg,以此类推,并不断增加

可以使用 Python 中的 os 和 PIL 库来遍历一个文件夹中的所有图片。其中,os 用于遍历文件夹中的所有文件名,PIL 则可以判断一个文件是否为图片格式。

以下是代码示例:

import os
from PIL import Image

def read_images(folder):
    images = []
    for fn in os.listdir(folder):
        if fn.endswith('.jpg'):  # 只处理 jpg 格式的文件
            f = os.path.join(folder, fn)  # 获取文件路径
            if os.path.isfile(f):  # 确定该路径对应的文件是一个普通文件而不是目录
                try:
                    with Image.open(f) as img:
                        images.append(f)
                except IOError:
                    pass
    return images


以上代码定义了一个 read_images 函数,传入一个文件夹路径 folder,该函数会返回该文件夹下的所有 jpg 图片的路径 images。在内部,首先使用 os.listdir(folder) 获取该文件夹下的所有文件名,然后对于每一个以 .jpg 结尾的文件名,构造出该文件的完整路径,并判断它是一个普通文件而不是目录,进而使用 PIL.Image.open 函数打开该文件并返回其路径。

接下来,如果需要检查新加入的图片是否已经被遍历过,可以将已经遍历过的图片的路径存储到一个列表或者文件中,再次遍历文件夹时先将该数据结构加载到内存中,遍历时判断当前文件的路径是否在列表或者文件中,如果不在则说明该文件是新加入的图片,可以进行处理。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7644463
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:【python中级】非jpg转化jpg工具
  • 除此之外, 这篇博客: python数据处理-数据清洗中的 5.递归遍历所有jpg图片 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 参考:https://blog.csdn.net/jerson_al/article/details/84061503

    # -*- coding:utf-8 -*-
    import os
    import shutil
    import cv2
    def ismkdir(path_):
        if not os.path.exists(path_):
            os.makedirs(path_)
    
    
    def searchDirFile(rootDir,saveDir):
        for dir_or_file in os.listdir(rootDir):
            filePath = os.path.join(rootDir, dir_or_file)
            if os.path.isfile(filePath):
                if os.path.basename(dir_or_file).endswith('.jpg'):
                    print('imgBox fileName is '+ os.path.basename(filePath))
                    img = cv2.imread(filePath)
                    if(img.shape):
                        shutil.copyfile(filePath,os.path.join(saveDir,os.path.basename(filePath)))
                    else:
                        print 'img文件不可读'
                        continue
                else:
                    continue
            elif os.path.isdir(filePath):
                searchDirFile(filePath,saveDir)
            else:
                print('not file and dir '+os.path.basename(filePath))
    
    rootDir = './light'
    saveDir = './save'
    
    ismkdir(rootDir)
    ismkdir(saveDir)
    
    searchDirFile(rootDir,saveDir)

以下内容部分参考ChatGPT模型:


可以使用Python的os模块和glob模块来遍历文件夹中的所有图片。具体步骤如下:

  1. 导入os和glob模块:
import os
import glob
  1. 定义一个函数,用来遍历文件夹中的所有图片:
def traverse_folder(folder_path):
    # 获取文件夹中所有的图片文件
    image_files = glob.glob(os.path.join(folder_path, '*.jpg'))
    # 对文件进行排序
    image_files.sort()
    # 遍历文件
    for image_file in image_files:
        # 处理每个文件的代码
        print(image_file)
  1. 调用函数,传入文件夹路径参数:
folder_path = '/path/to/folder'
traverse_folder(folder_path)
  1. 如果需要不断遍历文件夹中新增的图片,可以使用一个while循环来实现:
folder_path = '/path/to/folder'
while True:
    traverse_folder(folder_path)
    # 每隔一段时间再次遍历文件夹
    time.sleep(10)  # 单位为秒,可以根据实际情况调整

这样就可以实现遍历文件夹中所有图片,并且不断遍历新增的图片。注意要对文件进行排序,以保证遍历顺序正确。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快