文件信息分析

对本机的所有的文件信息数据进行搜索和收集,绘制数据分布的直方图。
A、 文件大小分布的直方图
B、 文件创建时间和修改时间的直方图
C、 文件类型的直方图

import os  #对文件操作的库函数
import time
import matplotlib.pyplot as plt  #画直方图
from matplotlib.font_manager import FontProperties  #对中文字体的识别
font=FontProperties(fname=r"C:\\Windows\Fonts\simhei.ttf",size=14)

path="e:\\"#对e盘进行数据收集
list1=[]
list2=[]
list3=[]
size1=[]
type1={}
ctime={}
mtime={}
num1=0
num2=0
num3=0
num4=0
num11=0
num22=0
num33=0
num44=0
#os.walk()方法有三个返回值 路径,目录,文件名,该方法可以将一个路径的中的所有子路径全部遍历一遍
for a,b,c in os.walk(path):
    q=os.listdir(a)
    for e in q:
        #获取文件的创建时间
        t1=time.localtime(os.path.getctime(a+"\\"+e))
        #获取文件的修改时间
        t2=time.localtime(os.path.getmtime(a+"\\"+e)) #因为os.path.getctime(路径+\\+文件名)得到的是时间戳,前面的time.localtime将时间戳转换为具体的年-月-日
        #获取文件的大小,以字节为单位
        s=os.path.getsize(a+"\\"+e)
        #将所得数字添加到size1中
        size1.append(s)
        #将文件名和文件类型分开,例如:abc.txt,将会分割成["abc",".txt"]这样的列表
        n=os.path.splitext(e)
        #将所得类型添加到list1中
        list1.append(n[1]) #提取t1中的具体数字,例如:t1=20190806则w1=[2019,08,06],则列表第一个元素为年份,即w1[0]=年
        w1=list(t1)
        #将年份按半年分隔开(老师个憨批,我本来是按年分的,检查的时候然后现场改代码,改为半年的),按年分可参照修改时间代码段,几乎相同。
        if w1[0]==2018:
            if w1[1]<=6:
                num11+=1
            else:
                num22+=1
        elif w1[0]==2019:
            if w1[1]<=6:
                num33+=1
            else:
                num44+=1
        #修时间数据提取
        w2=list(t2)
        #将列表的第一个元素(年份)添加到list3中
        list3.append(w2[0])
        
#每一文件的类型全部存在了list1列表中,对列表进行遍历,遍历的元素如果不在字典type1中,则向字典添加该元素{"类型":1},如果在字典中已经存在,则key值所对应的的键值+1        
for i in list1:
    if i not in type1:
        type1[i]=1
    else:
        type1[i]+=1 
'''    
for i in list2:
    if i not in ctime:
        ctime[i]=1
    else:
        ctime[i]+=1
'''

for i in list3:
    if i not in mtime:
        mtime[i]=1
    else:
        mtime[i]+=1

for i in size1:
    if i<1000:
        num1+=1
    elif i<10000:
        num2+=1
    elif i<100000:
        num3+=1
    else:
        num4+=1
    
#对文件大小建图    
list4=[num1,num2,num3,num4] 
fig,ax=plt.subplots()
y=list4
x=['0~1000','1000~10000','1000~100000','others']
b=ax.bar(x,y)
plt.bar(range(len(x)),y,color='rbgb')
for a,b in zip(x,y):
    ax.text(a,b+1,b,ha='center',va='bottom')
    
plt.title(u"文件大小",FontProperties=font)
plt.show()

#对文件创建时间建图
x=["2018.1~6","2018.7~12","2019.0~6","2019.7~12"]
y=[num11,num22,num33,num44]
fig,ax=plt.subplots()
b=ax.bar(x,y)
plt.title(u'创建时间',FontProperties=font)
for a, b in zip(x, y):
    ax.text(a, b+1, b, ha='center', va='bottom')
plt.bar(x,y,color='rgb')
plt.show()

#对文件的修改时间建图
m_list1=[]
m_list2=[]
#将m_time字典中的键值作为X轴,values值做为Y轴
m_list1=mtime.keys()
m_list2=mtime.values()
x=m_list1
y=m_list2
#画图
fig,ax=plt.subplots()
#传X,Y
b=ax.bar(x,y)
#在图上添加该类的具体个数
for a, b in zip(x, y):
    ax.text(a, b+1, b, ha='center', va='bottom')
#设置图的颜色
plt.bar(x,y,color='yrb')
#FontProperties=font,用来识别中文字体
plt.title(u'修改时间',FontProperties=font)
plt.show()

#对文件类型建图
t_list1=[]
t_list2=[]
t_list1=type1.keys()
t_list2=type1.values()
x=t_list1
y=t_list2
fig,ax=plt.subplots()
b=ax.bar(x,y)
for a, b in zip(x, y):
    ax.text(a, b+1, b, ha='center', va='bottom')
plt.title(u'文件类型',FontProperties=font)
plt.bar(range(len(x)),y)
plt.show()
#作图唯一的遗憾,我做的是条形图,不是直方图,但问题不大,若做直方图将bar函数改为hist
#你哥哥我只能帮你到这了,碰见憨批老师让你现场改,你就自求多福吧




    
        

    










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值