代码试图找出哪些文件是空的,哪些文件不是,并打印一个包含其状态(空/不空)的文件名列表。
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])
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))
如果您想再次遍历列表以获得空文件的数量,那么您可以按照Ellochka Cannibal建议的那样做,尽管如果您只计算文件数量,那么这是相当浪费的。要获得计数,只需在if语句中放入一个计数器变量:
c=0
...
for ...
if (size == 0):
status = ('EMPTY')
c += 1