[Python]读取xls并搜索文件夹,归类同名文件

来源:互联网 发布:java清除浏览器缓存 编辑:程序博客网 时间:2024/04/30 00:52

整理手上的论文,按期刊分类,为每一类期刊分年份存放pdf。

# -*- coding:gb2312 -*-import xlrdimport osimport globfrom shutil import copydef searchEx(ex):    #根据编号返回文件名称    searchroot = r'E:\论文整理\待分类\整理前'    retrunName = ''    cwd = os.getcwd()    if searchroot:        os.chdir(searchroot)    for filename in glob.iglob('%s_*.pdf'%ex):        retrunName = filename    os.chdir(cwd)    return retrunNamepath = r'E:\工作簿1.xlsx'searchroot = r'E:\论文整理\待分类\整理前'baseroot = r'E:\论文测试'data = xlrd.open_workbook(path)table = data.sheets()[0]nrows = table.nrowsncols = table.ncols#print '合计%s行'%nrowsfor i in range(1,nrows):    try:        name = table.row(i)[0].value.encode('gb2312') #文件夹名称        pathi = r'%s\%s'%(baseroot,name)        if not os.path.exists(pathi):            os.makedirs(pathi)        #print name        for j in range(2,21):            try:                num = str(table.row(i)[j].value).encode('gb2312')                if num <> '':                    yearj = '%s'%str(j+1995)                    pathij = r'%s\%s'%(pathi,yearj)  #tardir                    if not os.path.exists(pathij):                        os.makedirs(pathij)                    multi = num.find(';')                    if multi > 0:                        for n in num.split(';'):                            ex = '%04i'%float(n)                            filename = searchEx(ex)                            srcfile = r'%s\%s'%(searchroot,filename)                            dstfile = r'%s\%s'%(pathij,filename)                            #print srcfile,dstfile                            copy(srcfile,dstfile)                    else:                        ex = '%04i'%float(num)                        filename = searchEx(ex)                        srcfile = r'%s\%s'%(searchroot,filename)                        #print srcfile                        dstfile = r'%s\%s'%(pathij,filename)                        #print dstfile                        copy(srcfile,dstfile)            except:                print "error: %i,%i"%(i,j)                continue        #break    except:        print "error: "        continue


0 0