不多说了,直接看代码吧!
import os
path = 'e:/Download/'
kzm = []
kzmTemp = set()
kzmTemp2 = []
dict = {}
for root,dirs,files in os.walk(path):
for file in files:
ext = os.path.splitext(file)[1][1:]
kzm.append(ext)
#遍历目录path,这里用到的splitext()方法是将文件名和扩展名分开,后面的[1]代表取扩展名([0]的话就代表取文件名了),由于splitext()方法取扩展名的时候,是连分隔文件名和扩展名的‘.’一起取的,所以[1:]的作用的是去掉扩展名前面点
for i in range(len(kzm)):
kzm[i] = kzm[i].lower()
#全部变小写,避免例如exe和EXE系统会当做两种文件来处理的问题
for i in range(len(kzm)):
kzmTemp.add(kzm[i])
#将List转换为Set,目的是为了将Set中的所有元素作为Dict中的Key,因为Set会自动剔除重复的元素
kzmTemp2 = [i for i in kzmTemp]
for i in range(len(kzmTemp2)):
dict[kzmTemp2[i]] = 0
#这里构造了一个叫做dict的Dict(好绕嘴),并将所有的扩展名都作为dict的key,给所有的key都赋值为0
for i in range(len(kzm)):
dict[kzm[i]] += 1
#遍历数组kzm,统计各扩展名出现的次数,然后将这个数字赋值给dict中相应的key
print('统计的目录为:%s' % path)
for key in dict:
print('%s: %s' % (key,dict[key]))
代码一点也不优美,来回转换了N次数据类型,for了N次……‘
不过可以解决问题。知识有限,只能用一些“入门级”的方法去解决问题。