博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python小程序之文件整理
阅读量:6858 次
发布时间:2019-06-26

本文共 5244 字,大约阅读时间需要 17 分钟。

hot3.png

设计思路

    逻辑

        输入/出源文件地址

        判断路径是否是空

        输入的是汉字还是英文(大小写)

        输入的文件夹目录是否为空

        输出的路径文件是否存在

        用到的主要模块os,re

        主要用到的函数os.walk(path)

运行效果图

192136_5qnD_1391889.png

代码展示

 

 

import sysimport osimport shutilimport reimport tkinterimport timeimport datetimedef shmsg(text):    root=tkinter.Tk()    w=tkinter.Frame(root)    w.pack(expand=1,fill=tkinter.BOTH)    lab = tkinter.Label(w, text=text ,bg='red')    lab.pack(fill=tkinter.BOTH)    root.mainloop()def frame(root,side):    w=tkinter.Frame(root)    w.pack(side=side,expand=1,fill=tkinter.BOTH)    return wdef label(root,side,text,bg=None,):    lab = tkinter.Label(root, text=text ,bg=bg,width = 9)    lab.pack(side=side,fill=tkinter.BOTH)    return labdef entry(root,vals,side):    path=tkinter.Entry(root , width=30,textvariable=vals)    path.pack(side=side,expand=1,fill=tkinter.BOTH)    return pathdef button(root,text,side,command=None):    butn=tkinter.Button(root,text=text,command=command)    butn.pack(side=side,expand=1,fill=tkinter.BOTH)    return butndef text(root,side):    text = tkinter.Text(root)    text.pack(side=side,expand=1,fill=tkinter.BOTH)    return textdef load(text,fi):    # text.delete(0.0,tkinter.END)    text.insert(tkinter.INSERT,fi+'\n') def seEeg(str):    # 将文件明的英文查出    rule=re.compile(r'[^a-zA-z]')    result = rule.sub('',str)    return result def is_english(uchar):    """判断一个unicode是否是英文    :param uchar:    """    if (uchar >=  '\u0041'and uchar<= '\u005a') or (uchar >=  '\u0061'and uchar<= '\u007a'):        return True    else:        return Falsedef movefiles(strs,path,tarPath,text):    mf=''    msg=''    if (len(strs)==0)|(len(path)==0)|(len(tarPath)==0):        msg='亲!输入项不能为空哦!'    else:        for root,dirs,files in os.walk(path):            if(len(files)==0):                 msg='亲!目标不存在文件呦!'            else:                for file in files:                    ext=file.split('.')                    ext=ext[-1]                    if ext in ['pdf','txt','docx','xlsx','chm','doc','xls']:                        if is_english(strs):                            name=seEeg(file)                            m = re.search(strs, name, re.IGNORECASE)                        else:                            m = re.search(strs, file)                        if m:                            size = os.path.getsize(root+os.sep+file)                            size=size/1000000                            if size > 10:                                msg=file+'文件大于10M,请耐心等待O(∩_∩)O~'                                # load(text,msg)                                continue                            if os.path.exists(tarPath+os.sep+file):                                msg=file+'已经存在于'+tarPath+'下面,请确认目标文件夹是否为空'                                # load(text,msg)                                break                            print('-------------------------------------')                            shutil.move(root+os.sep+file,tarPath)                            mf=file                            load(text,msg)                            load(text,mf)                            load(text,'-----------------------------')    load(text,msg)    load(text,'程序已经运行结束!请查看')    load(text,datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S'))    load(text,'-----------------------------------------------------------------')def selefiles(strs,path,tarPath,text):    msg=''    if (len(strs)==0)|(len(path)==0)|(len(tarPath)==0):        msg='亲!输入项不能为空哦!'    else:        for root,dirs,files in os.walk(path):            if(len(files)==0):                msg='亲!目标不存在文件呦!'            else:                for file in files:                    ext=file.split('.')                    ext=ext[-1]                    if ext in ['pdf','txt','docx','xlsx','chm','doc','xls']:                        if is_english(strs):                            name=seEeg(file)                            m = re.search(strs, name, re.IGNORECASE)                        else:                            m = re.search(strs, file)                        if m:                            load(text,file)    load(text,msg)    load(text,'程序已经运行结束!请查看')    load(text,datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S'))    load(text,'-----------------------------------------------------------------')if __name__=='__main__':    root=tkinter.Tk()    root.title("文件整理工具")    toframe=frame(root,'top')    enframe=frame(root,'top')    en3frame=frame(root,'top')    en4frame=frame(root,'top')    en5frame=frame(root,'top')    en6frame=frame(root,'top')    covals= tkinter.StringVar()    tavals= tkinter.StringVar()    kevals= tkinter.StringVar()    lab1=label(toframe,'left','查找目录')    lab2=label(enframe,'left','目标目录')    lab3=label(en3frame,'left','查找关键字','green')    coentry=entry(toframe,covals,'right')    taentry=entry(enframe,tavals,'right')    keentry=entry(en3frame,kevals,'left')    text=text(en5frame,'top')    cobutton=button(en4frame,"查找",'left',command=lambda path=covals,tarPath=tavals,strs=kevals,text=text:selefiles(strs.get(),path.get(),tarPath.get(),text))    tabutton=button(en4frame,"开始移动",'right',command=lambda path=covals,tarPath=tavals,strs=kevals,text=text:movefiles(strs.get(),path.get(),tarPath.get(),text))    root.mainloop()

 

转载于:https://my.oschina.net/hellotest/blog/399266

你可能感兴趣的文章
进程、应用程序域,线程和上下文之间的关系
查看>>
c++作业:递归调用,例题4.5 求第五个人的年龄
查看>>
为什么我的新项目选择了Quick-cocos2d-x
查看>>
Spring源码学习之一下载和导入
查看>>
13.使用第三方类实现动画
查看>>
H5在js中向指定的元素添加样式
查看>>
Java第一章
查看>>
文件编辑器Vim操作使用
查看>>
本地通知,UILocalNotification
查看>>
增强学习
查看>>
[逆向][Writeup]EIS2016 chkflag - .NET程序逆向
查看>>
RequireJS入门指导 (转)
查看>>
在子类中调用父类被隐藏的函数的方法
查看>>
修改Discuz! X2文章标题字数限制为255
查看>>
【HDOJ】2102 A计划
查看>>
利用p4实现ipv6转发实验
查看>>
UiPath实践经验总结(二)
查看>>
分页---总结
查看>>
触屏网页设计初探 (二) - [移动开发]
查看>>
前端开发的历史和趋势(转摘阮一峰)
查看>>