如何找到文件夹中的第一张图片?

How to find the first image in a folder?

我想要实现的是在不需要扫描整个文件夹的情况下获取文件夹中的第一个 jpg 或 png 图像项目。

path = os.getcwd()
#List of folders in the path
folders = next(os.walk(path))[1]

#Get the first element
folders_walk = os.walk(path+'\'+ folder)
firts = next(folders_walk) [2][0]

通过这段代码,我得到了文件夹的第一个元素,但这可能是也可能不是图像。有什么建议吗?

不确定“无需扫描整个文件夹”是什么意思。您可以使用 glob(),但仍会扫描整个目录以匹配正则表达式。

无论如何,请参阅下面的解决方案。如果您不想递归搜索(如下所示)/想要不同的标准来确定文件是否为图像,可以轻松修改。

import os 

search_root_directory = os.getcwd()

# Recursively construct list of files under root directory. 
all_files_recursive = sum([[os.path.join(root, f) for f in files] for root, dirs, files in os.walk(search_root_directory)], [])

# Define function to tell if a given file is an image
# Example: search for .png extension.  
def is_an_image(fpath): 
    return os.path.splitext(fpath)[-1] in ('.png',)

# Take the first matching result. Note: throws StopIteration if not found
first_image_file = next(filter(is_an_image, all_files_recursive))

请注意,如果 sum()(预先计算整个文件列表)被省略,并且文件列表在 is_an_image(但代码不太清楚)。