一种利用文件地址进行关键字统计的实现

导读:假设文件是学生提交上来的作业,而关键字是学生的姓名,最终将得到学生提交作业的次数。

1 递归返回目录列表

#定义递归函数,返回列表
def getAllFile(somepath):
    #print('begin-->',os.listdir(somepath))
    fileList = []
    for df in os.listdir(somepath):
        os.chdir(somepath)
        #print('当前目录:',os.getcwd())
        #print(df)
        if os.path.isfile(df):
            fileList.append(os.path.join(somepath,df))
            #print('is a file')
        if os.path.isdir(df):
            #print('is a dir')
            fileList.extend(getAllFile(os.path.join(somepath,df)))
    return fileList

2 确定学生名单(被统计的关键字)

#读入名单,返回名单列表
def nameList(nldir):
    file = open(nldir)
    namelist = []
    for line in file:
        namelist.append(line.rstrip())
    return namelist
nl = ['A',  'B', 'C', 'D', '...']
nldir = r'E:\2022down\python编程-信息211\pr01\网络192-3名单.txt'
# nldir = 'E:/2022up\信息211-python/2022-3-18/namelist.txt'
nl = nameList(nldir)

3 初始化输出结果的excel文件

#创建输出结果的excel
wb = xlwt.Workbook()
# 添加一个表
ws = wb.add_sheet('作业统计结果')

4 初始化学生作业地址

URL_WORK = r'E:\2022down\PHP动态网页制作-网络192、193\学生作品\平时'

5 初始化记录结果的变量

resultAll = dict([(n,0) for n in nl])

6 获取作业分批存在地址的目录集

cur_dir = os.listdir(URL_WORK)
#统计交作业情况
ws.write(0, 0, '姓名')
ws.write(0, 1, '作业次数')
for i in range(len(nl)):
    for s_file in cur_dir:
        s_dir = os.path.join(URL_WORK,s_file)
        #print(s_dir)
        if os.path.isdir(s_dir):
            #判断本次课是否交作业
            fileList = getAllFile(s_dir)
            for d in fileList:
                if nl[i] in d:
                    #记录判断的结果
                    resultAll[nl[i]] +=1
                    break
    #写入excel中
    ws.write(0+i+1, 0, nl[i])
    ws.write(0+i+1, 1, resultAll[nl[i]])

7 保存输出结果

# 5 保存输出结果
print(resultAll)
wb.save(os.path.join(URL_WORK,'192与193线下作业信息统计结果.xls'))

附完整代码

为了方便使用,完整代码里把作业地址、输出结果文件名、学生名单等可变选项都提到前面了。

import os
import xlwt

# 1 初始化学生作业地址与输出结果文件名
#URL_WORK = r'E:\2022down\PHP动态网页制作-网络192、193\学生作品\平时'
#RESULT = '192与193线下作业信息统计结果.xls'
URL_WORK = r'E:\2022down\大数据导论\学生作品\平时'
RESULT = '信息211大数据线下作业信息统计结果.xls'

# 2 确定学生名单
#读入名单,返回名单列表
# nldir = 'E:/2022up\信息211-python/2022-3-18/namelist.txt'
def nameList(nldir):
    file = open(nldir)
    namelist = []
    for line in file:
        namelist.append(line.rstrip())
    return namelist
nl = ['A',  'B', 'C', 'D', '...']
#nldir = r'E:\2022down\python编程-信息211\pr01\网络192-3名单.txt'
#nl = nameList(nldir)

# 3 定义递归函数,返回列表
def getAllFile(somepath):
    #print('begin-->',os.listdir(somepath))
    fileList = []
    for df in os.listdir(somepath):
        os.chdir(somepath)
        #print('当前目录:',os.getcwd())
        #print(df)
        if os.path.isfile(df):
            fileList.append(os.path.join(somepath,df))
            #print('is a file')
        if os.path.isdir(df):
            #print('is a dir')
            fileList.extend(getAllFile(os.path.join(somepath,df)))
    return fileList



# 4 初始化输出结果的excel文件
#创建输出结果的excel
wb = xlwt.Workbook()
# 添加一个表
ws = wb.add_sheet('作业统计结果')


# 5 初始化记录结果的变量
resultAll = dict([(n,0) for n in nl])

# 6 获取作业分批存在地址的目录集
cur_dir = os.listdir(URL_WORK)
#统计交作业情况
ws.write(0, 0, '姓名')
ws.write(0, 1, '作业次数')
for i in range(len(nl)):
    for s_file in cur_dir:
        s_dir = os.path.join(URL_WORK,s_file)
        #print(s_dir)
        if os.path.isdir(s_dir):
            #判断本次课是否交作业
            fileList = getAllFile(s_dir)
            for d in fileList:
                if nl[i] in d:
                    #记录判断的结果
                    resultAll[nl[i]] +=1
                    break
    #写入excel中
    ws.write(0+i+1, 0, nl[i])
    ws.write(0+i+1, 1, resultAll[nl[i]])

# 7 保存输出结果
print(resultAll)
wb.save(os.path.join(URL_WORK,RESULT))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: log 文件切割工具是一种用于自动分割日志文件的工具,其主要作用是将单个大日志文件按照一定规则进行切割,以便于后续的管理和分析。 在软件开发和系统运维过程中,日志文件通常会持续增长,大小逐渐变大。单个大日志文件不仅占用存储空间,而且在查找特定信息或者进行故障排查时效率低下。为了解决这个问题,log 文件切割工具应运而生。 log 文件切割工具的操作相对简单,一般可根据时间、大小或者关键字等规则来切割日志文件。比如,按时间切割时,可以通过设定一个时间间隔(比如每天、每小时),工具会自动将日志文件按照时间进行切割,生成新的日志文件,并将原始日志文件进行备份。按大小切割时,可以设定一个大小阈值,当日志文件大小超过阈值时,工具会自动切割文件。按关键字切割时,则是根据指定的关键字对日志进行匹配,匹配到后将日志文件切割。 使用 log 文件切割工具可以带来多个好处。首先,切割后的日志文件更加便于存储和传输,不容易导致存储空间的浪费。其次,切割后的日志文件更加易于查找和分析,可以根据需要只查看特定时间段或者特定事件的日志,提高查找效率。此外,切割工具还可以对日志进行归档、压缩和清理等操作,进一步提高日志管理的效率。 总而言之,log 文件切割工具是一种能够根据一定规则将单个大日志文件切割为多个小日志文件的工具,通过分割日志文件,提高日志存储、查找和分析的效率。 ### 回答2: log 文件切割工具是一种用于对日志文件进行切割和归档的工具。在系统运行过程中,日志文件会不断增长,如果不加以处理,会导致日志文件过大,不方便查看和管理。而使用log 文件切割工具,可以将日志文件按照一定的规则进行拆分,使得每个文件的大小在可控范围内。 log 文件切割工具通常有几种常见的切割方式。一种方式是按照时间进行切割,将日志文件按照日期或者小时进行拆分。这种方式适合于需要按照时间段进行查找和统计的场景。另一种方式是按照大小进行切割,当日志文件达到一定大小时,就会自动拆分成新的文件。这种方式适合于需要平均切割文件大小,同时控制每个文件大小的场景。 log 文件切割工具的功能不仅仅是切割日志文件,还可以对切割后的文件进行归档和压缩。归档功能可以将已经切割的文件按照一定的目录结构进行存放,方便日后查找和管理。压缩功能可以将归档后的文件进行压缩,减少磁盘空间的占用。 使用log 文件切割工具可以带来多个好处。首先,可以方便地查看和管理日志文件,不再需要打开一个巨大的日志文件来查找关键信息,而是可以根据切割后的文件名和位置进行定位。其次,切割工具可以控制每个文件的大小,避免文件过大导致内存溢出和磁盘空间浪费的问题。最后,归档和压缩功能可以减少文件的存储空间占用,提高磁盘利用率。 总之,log 文件切割工具是一种非常实用的工具,可以帮助我们更好地管理和利用日志文件。 ### 回答3: log文件切割工具是一种帮助将大型log文件按照指定条件分割成多个小文件的工具。日志文件切割通常用于解决以下问题: 1. 空间占用问题:大型log文件会占用大量的存储空间,而且随着时间的推移,文件会越来越大。使用切割工具可以将大文件切割成多个小文件,有效减少存储空间的占用。 2. 查询和分析问题:当需要查询或分析某个时间段的日志时,整个大文件的读取和处理会非常耗时。通过切割工具将日志按时间或大小切割成多个小文件,可以提高查询和分析效率。 3. 日志管理问题:大型log文件难以管理,容易造成混乱和遗漏。通过切割工具将日志切割成多个小文件,可以更方便地管理、备份和归档。 4. 数据处理问题:某些情况下,需要对日志进行特定的数据处理操作,比如将日志导入到数据库或其他系统中。使用切割工具可以将日志按照需要的格式进行切割,方便后续的数据处理操作。 log文件切割工具通常具有灵活的配置选项,可以根据时间、文件大小、日志级别等参数进行切割。一些切割工具还提供了压缩、加密、归档等功能,进一步优化日志管理和存储。 总之,log文件切割工具是一种帮助解决大型log文件管理和处理问题的实用工具,能够提高存储效率、查询和分析效率,并方便后续的数据处理操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值