gpt4 book ai didi

python - 在 Python 中计算目录中的一组扩展名(图像)

转载 作者:太空宇宙 更新时间:2023-11-03 15:56:49 24 4
gpt4 key购买 nike

我有包含混合文件的文件夹,并且只想要图像类型文件的数量。以下是返回目录中的总文件,而不仅仅是图像。我做错了什么?

extensions = ['.jpg','.png','.gif']
DL_path = os.getcwd()
for dirpath, dirnames, files in os.walk(DL_path):
for original_file in files:
todays_files = sum(1 for x in files if any(needle in original_file for needle in extensions))
print(todays_files)

如果我有一个jpg,一个png,两个txt文件。 todays_files 应该返回 2,但它返回了 4。

最佳答案

您可以使用 set避免重复项:

>>> found_extensions = set()
>>> found_extensions.add('.png')
>>> found_extensions.add('.png') # try to add .png again
>>> found_extensions
{'.png'} # <-- appear only once

import os

extensions = {'.jpg','.png','.gif'} # set literal

found_extensions = set()
for dirpath, dirnames, files in os.walk(os.getcwd()):
for f in files:
found_extensions.add(os.path.splitext(f)[-1])
# ^-- duplicated item is not added

print(extensions & found_extensions) # to get itersection (&) => filter
print(len(extensions & found_extensions))

更新获取每个目录的匹配文件数:

import os

extensions = {'.jpg','.png','.gif'} # set literal

for dirpath, dirnames, files in os.walk(os.getcwd()):
count = sum(os.path.splitext(f)[-1] in extensions for f in files)
print(dirpath, count)

os.path.splitext(f)[-1] in extensions 将检查文件是否具有所需的扩展名,并返回 True (= 1)/ (= 0)。将它们相加会给你想要的。

>>> True == 1
True
>>> False == 0
True
>>> sum([True, False, False, True, False])
2

关于python - 在 Python 中计算目录中的一组扩展名(图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com