<p>今天下午上数据库应用的课程,在路上就突然冒出这么一个想法。</p> <p>交作业~~~</p> <p>好几门课都有作业要交,大部分都是电子版的,特别是一些论文或报告,都是以word或pdf格式交的,发QQ或邮件,命名都有学号和姓名。</p> <p>课代表收作业的时候都要检查一下,谁没有交,催一下,或者告诉老师~</p> <p>当然,我们这一个小班也才50多个人,大班也才100号人,检查谁没有交作业可能花不了多少功夫。</p> <p>然而,对于整个学院,或者带了很多班的老师,检查起来确实是一件很费力的功夫。</p> <p>如果交大的作业形如:13091xxx_XXX,那么按文件名排序,可能还要好找些。不过就有几个特别的同学是这么交的:XXX_13091xxx,这个就尴尬了。</p> <p>可以帮他们改名字,不过这估计是另一份工作了,和我今天要讨论的话题不符,我们要找到是谁没有交作业,而不是帮那些有个性的同学改名字。</p> <p>我想了下,于是写了一个python,来做这份工作。</p> <p>当然,大家可能对我的成品有兴趣,特别是课代表或什么的(自恋一下),不过,大部分同学可能并不是课代表,他们就对我是如何做的这个过程比较感兴趣。</p> <ul> <li>首先,思考一下环境。那些收上来的文件是放在一个文件夹里的(可能怪异的课代表会采用其他的方法,比如按男女或者其他什么的) </li> <li>然后,咱们要对这些文件的文件名进行分析,就要取得这些文件名 </li> <li>最后对这些文件名进行分析,取出咱们关心的学号,然后进行比对,看看有哪些同学没有交作业 </li> </ul> <p>Ok,这个就是大概的步骤。看我的源码</p>

#3.py 
#encoding:utf8 
import os 
import re

directory=raw_input(&quot;Please enter directory to traversal:&quot;) 
s=range(13091250,13091260)#大家的学号,是全部的哟,一个也不能少,13091250-13091259 
for root,dirs,files in os.walk(directory):#遍历目录下的所有文件 
   print root 
    for name in files:#取得文件名称,进行分析 
        n=re.findall(r’[w+]*(d{8})[w+]*’,name)#正则表达式找出那8个连在一起数字,即学号 
        if n:#找出学号,如果没有的话,那这位童鞋要么学号不是8位,要么他是采用了什么加密手段 
            m=int(n[0])#对取出的学号进行类型转换,变为int 
            if m in s:#查看该同学的学号在不在那一个大列表里 
                s.remove(m)#在的话,删掉,那么剩下的就是没有交作业的 
print s#OVER,看看是哪些同学没有交作业

<p>看下的的测试文件,我只选取13091250-13091259 的进行测试:</p> <p>这些文件位于E:name</p> <p>wholostpaper</p> <p>这些文件,极尽那些同学的想法吧</p> <p>看看我的结果,是哪些同学没有交作业呢?</p> <p></p> <p>哦,是257和259啊,那课代表可以去找他们啦~</p> <p>大家可以拿其他语言实现以下,比如java,C#,C/C++ ~</p>

标签: pyhon

添加新评论