python统计某一文件夹下的文件个数(以统计学生实验报告的情况为例)

 

题目描述:

假如E盘中有上机测试目录,里面包含实验1 实验2 实验3 而实验123里面存放着学生上交的实验报告,格式为docx(doc)。

现在要求统计出这些学生上交的作业次数,结果以excel形式给出。

python统计某一文件夹下的文件个数(以统计学生实验报告的情况为例)_第1张图片

python统计某一文件夹下的文件个数(以统计学生实验报告的情况为例)_第2张图片

知识点:python文件操作,正则表达式。 

涉及的python库: os os.path re xlsxwriter

代码:

import os
import os.path
import re
import xlsxwriter

filelist=[]
result=[]
dic=dict()
def file_name(dirname):
     '''递归的把文件名添加到filelist列表中'''
     for item in os.listdir(dirname):
        abs_item=os.path.join(dirname,item) #abs_item为绝对路径
        filelist.append(item) #item为文件名
        if os.path.isdir(abs_item):#若是目录,递归调用
            file_name(abs_item)
                 
dictory_name=input("请输入目录名:")
file_name(r'%s'%dictory_name)
string =''
for i in filelist: #filelist是一个存储文件名的列表
    string+=i
#print(string) string="实验120177720752王雨岫.docx20177830101安新宇.docx20177...."
pattren = re.compile(r'2017[0-9]{7}') #用正则表达式匹配学号
m=pattren.findall(string)
#print(m) m=['20177720752', '20177830101',....]
n=set(m)
for i in n:
    dic.update({i:m.count(i)})
print(dic) #dic={'20177830103': 3, '20177830202': 3, '20177830117': 2,...}

'''把dic写入execl'''
workbook = xlsxwriter.Workbook("E:\\data.xlsx")
worksheet = workbook.add_worksheet()
f = workbook.add_format({'bold': True, 'bg_color': 'red'})
worksheet.write(0, 0, '学号', f)
worksheet.write(0, 1, '上交次数', f)
worksheet.set_column("A:A",15)
row=1
col=0
for key in dic.keys():
    worksheet.write(row, col, key)
    row += 1
row=0
for value in dic.values():
    worksheet.write(row+1,col+1,value)
    row += 1
workbook.close()

 运行结果:

python统计某一文件夹下的文件个数(以统计学生实验报告的情况为例)_第3张图片

 

你可能感兴趣的:(python程序设计)