Python kullanarak bir dizindeki dosya sayısı nasıl sayılır

Python kullanarak bir dizindeki dosya sayısını saymam gerekiyor.

Sanırım en kolay yol len(glob.glob('*')), ancak bu aynı zamanda dizinin kendisini de bir dosya olarak sayıyor.

Bir dizindeki yalnızca dosyaları saymanın bir yolu var mı?

Çözüm

os.listdir(),glob.globkullanmaktan biraz daha verimli olacaktır. Bir dosya adının sıradan bir dosya olup olmadığını (bir dizin veya başka bir varlık değil) test etmek içinos.path.isfile()` kullanın:

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))])
Yorumlar (7)

Bu os.listdir kullanır ve herhangi bir dizin için çalışır:

import os
directory = 'mydirpath'

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

bu bir jeneratör ile basitleştirilebilir ve biraz daha hızlı hale getirilebilir:

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)))
Yorumlar (0)
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

Bu yazıdan alınmıştır]1

Yorumlar (1)