(Python) - Как посчитать количество файлов в файле с определенным расширением или именем - PullRequest
0 голосов
/ 07 февраля 2020

Я новичок ie в программировании, и мне было интересно, не могли бы вы помочь мне.

Моя проблема в том, что я хочу составить список того, сколько файлов с определенным расширением или именами в папке, когда в ней много разных типов файлов.

Например, скажем, в папке есть куча разных типов файлов, и я хочу только посчитать, сколько существует файлов jpg.

Я попробовал приведенный ниже код из вопросов и ответов другого человека по stackoverflow, и он действительно показывает все имена файлов jpg в папке, но не показывает количество их количества в jpg файлах.

import glob, os
filelist = os.listdir('D:\Train')
for file in filelist:
    if(file.endswith('jpg')):
        print(file)

Кроме того, я хотел бы знать, есть ли способ подсчитать файл с определенными словами в именах. пример) подсчитать все jpg-файлы в папке, в именах которых есть «fire» (fire01.jpg, fire02.jpg и т. д.)

Большое спасибо!

Ответы [ 4 ]

4 голосов
/ 07 февраля 2020

Вы можете использовать glob, как в этом примере

import glob, os
filelist = glob.glob('D:\Train\*.jpg')
print(len(filelist))
for file in filelist:
    print(file)
1 голос
/ 07 февраля 2020

Конечно, как указывалось в предыдущем ответе, len(glob.glob(...)) сообщит вам, сколько файлов соответствует глобу, если вы можете переформулировать свое требование в один шаблон с подстановочными знаками.

В общем случае (например, , если вы хотите соответствовать .png, .jpeg, .JPEG, и т. д. c), просто увеличивайте переменную каждый раз, когда вы видите вхождение.

# Stylistic fix: don't combine imports
import glob
import os

# This is our counter
count = 0

# Notice r'' raw string to preserve literal backslash
for file in os.listdir(r'D:\Train'):
    if(file.endswith('jpg')):
        print(file)
        count += 1

print('Total:', count)

Вы можете добавить вторую переменную fire_count тоже; возможно, затем также переименуйте исходную переменную для согласованности.

total_count = 0
fire_count = 0

for file in os.listdir(r'D:\Train'):
    if(file.endswith('jpg')):
        print(file)
        total_count += 1
        if 'fire' in file:
            fire_count += 1

print('Total:', total_count)
print('Fire files:', fire_count)
0 голосов
/ 07 февраля 2020

Это можно сделать с помощью функции os.listdir () -, которая возвращает список всех имен файлов в данном каталоге, как в этом примере:

import os
print(len(os.listdir('D:\Train\'))

Поскольку вас интересуют только файлы в конце изображения вы можете добавить список понимания и сохранить только те файлы, которые заканчиваются на «.jpg»

print(len([x for x in os.listdir('D:\Train\') if x[:-4] == '.jpg'))
0 голосов
/ 07 февраля 2020

Итак, у меня есть три файла file1.pdf, file2.pdf и file3.pdf в моем пути / tmp / test-dir

Вы можете использовать приведенный ниже код, чтобы получить общее количество файлов pdf.

import glob
path_to_check = "/tmp/test-dir/"
total_txt_files = len(glob.glob1(path_to_check,"*.pdf"))
print(total_txt_files)

Выход

3

...