2013-03-17 3 views
0

Код пытается найти, какие файлы пустые, а какие нет, и распечатать список имен файлов со своим статусом (пустой/не пустой).Как я могу извлечь количество пустых файлов из списка (v), которое я создал?

import fnmatch 
import os 
import pprint 

#filenames_dic= {} 
v = [] 

for root, dirnames, filenames in os.walk('P:/data/'): 
    for filename in fnmatch.filter(filenames, '*.txt'): 

     address=os.path.join(root,filename) 
     size= os.path.getsize(address) 
     if (size == 0): 
      status= ('EMPTY')   

     else: 
      status = (size) 

     v.append([address,status]) 

ответ

2
number_of_empty_files = len([x[1] for x in v if x[1] == 'EMPTY']) 

или

number_of_empty_files = len(filter(lambda x: x[1] == 'EMPTY', v)) 
1

Если вы хотите перебрать список еще раз, чтобы получить количество пустых файлов, то вы могли бы сделать, как это было предложено Эллочка Cannibal, хотя это довольно расточительно, если вы считаете только файлы. Чтобы получить счет, вы можете просто ввести переменную счетчика в оператор if:

c=0 
... 
for ... 
    if (size == 0): 
    status = ('EMPTY') 
    c += 1