使用python处理文件

背景:

260个学生,分52组,每组1-6人,交作业时只需要一个人代表整个team交,有多次作业,每次可以由不同的人提交。

文件名格式为:学号_姓名。我只负责其中9组,所以要从52个组内挑出我负责的9组,每次对着40多个人的名单从50多个文件名中检索出其中9个,太麻烦。

于是想用脚本挑出我自己负责的那部分,可是又不会windows下的shell,其实linux下也不会。。。。

刚好学了python,就打算用python处理一下。


代码如下:

import os
name = "homework2" ###select files in which dir,需要处理的文件所在文件夹
####我负责的9个组的学号,每行一个team
tasks=(111250116,111250158,111250196,111250198,111250222,
       111250199,111250200,111250210,111250211,128351018,
       111250114,111250206,111250213,111250242,111250244,
       111250153,111250171,111250214,101250032,101250038,
       111250184,111250189,111250205,111250215,111250223,
       111250207,111250212,111250216,111250217,111250232,
       111250209,111250218,111250231,111250236,101250202,
       111250202,111250228,111250235,111250243,111250252,
       111250226,111250227,111250229,111250230,111250240)

####定义一个查找函数,查找给定的学号是不是在我负责的名单里,
####在就返回在元组里的编号,否则返回-1
def find(num):
    n=0
    while n<len(tasks):
        if(tasks[n]==num):
            return n;
        n = n+1
    return -1

files = os.listdir(name)###列出目录下所有文件
curdir=os.path.join(os.getcwd(),name)###得到需要处理文件所在目录绝对路径
print curdir

for f in files:
    #print f
    num = (int)(str(f)[:9])####前9位为学号
    res = find(num)
    fp = os.path.join(curdir,f)###当前处理的文件的绝对路径
    #print fp
    if res==-1: ##not finds
        os.remove(fp) ##delete file删除文件,参数需要为绝对路径
        print "remove "+f+"..."
    else: ###rename to add team id 
        fn = "team_" + str((int)(res/5+37)) + "_" + f  ##文件名加所在组前缀
        fnp= os.path.join(curdir,fn)
        os.rename(fp,fnp)###重命名文件
        print "rename "+fn

#print files

print "done."
temp = input("press ENTER to exit...")

运行效果很好,比手工查找效率高的多。。。

脚本真好用。。。比c/c++/java之类的简单的多。。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值