Как считать количество файлов в каталоге с помощью Python

Я должен считать количество файлов в каталоге с помощью Python.

Я предполагаю, что самый легкий путь len(glob.glob('*')), но это также считает сам каталог как файл.

Там какой-либо путь состоит в том, чтобы считать только файлы в каталоге?

194
задан fish2000 19 March 2019 в 14:43
поделиться

4 ответа

os.listdir () будет немного более эффективным, чем использование glob.glob . Чтобы проверить, является ли имя файла обычным файлом (а не каталогом или другим объектом), используйте os.path.isfile () :

import os, os.path

# simple version for working with CWD
print len([name for name in os.listdir('.') if os.path.isfile(name)])

# path joining version for other paths
DIR = '/tmp'
print len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))])
239
ответ дан 23 November 2019 в 05:23
поделиться

Это использует os.listdir и работает для любого каталога:

import os
directory = 'mydirpath'

number_of_files = len([item for item in os.listdir(directory) if os.path.isfile(os.path.join(directory, item))])

это можно упростить с помощью генератора и сделать немного быстрее с помощью:

import os
isfile = os.path.isfile
join = os.path.join

directory = 'mydirpath'
number_of_files = sum(1 for item in os.listdir(directory) if isfile(join(directory, item)))
7
ответ дан 23 November 2019 в 05:23
поделиться
import os

def count_files(in_directory):
    joiner= (in_directory + os.path.sep).__add__
    return sum(
        os.path.isfile(filename)
        for filename
        in map(joiner, os.listdir(in_directory))
    )

>>> count_files("/usr/lib")
1797
>>> len(os.listdir("/usr/lib"))
2049
4
ответ дан 23 November 2019 в 05:23
поделиться
def count_em(valid_path):
   x = 0
   for root, dirs, files in os.walk(valid_path):
       for f in files:
            x = x+1
print "There are", x, "files in this directory."
return x

Взято из этого сообщения

5
ответ дан 23 November 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: