文档章节

python小程序之文件整理

红焖鲤鱼
 红焖鲤鱼
发布于 2015/04/12 19:22
字数 786
阅读 316
收藏 0

设计思路

    逻辑

        输入/出源文件地址

        判断路径是否是空

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

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

        输出的路径文件是否存在

        用到的主要模块os,re

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

运行效果图

代码展示

 

 

import sys
import os
import shutil
import re
import tkinter
import time
import datetime

def 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 w
def label(root,side,text,bg=None,):
    lab = tkinter.Label(root, text=text ,bg=bg,width = 9)
    lab.pack(side=side,fill=tkinter.BOTH)
    return lab
def entry(root,vals,side):
    path=tkinter.Entry(root , width=30,textvariable=vals)
    path.pack(side=side,expand=1,fill=tkinter.BOTH)
    return path
def button(root,text,side,command=None):
    butn=tkinter.Button(root,text=text,command=command)
    butn.pack(side=side,expand=1,fill=tkinter.BOTH)
    return butn
def text(root,side):
    text = tkinter.Text(root)
    text.pack(side=side,expand=1,fill=tkinter.BOTH)
    return text
def 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 False
def 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()

 

© 著作权归作者所有

共有 人打赏支持
红焖鲤鱼
粉丝 115
博文 41
码字总数 29844
作品 0
浦东
QA/测试工程师
私信 提问
21个Python免豆资料下载地址汇总

为了方便大家学习,小弟最近整理了一批免豆下载的Python资料,共21个,整理了这批资料的下载地址,大家可以根据自己的需要选择性下载。希望大家喜欢~ Python灰帽子中文 http://down.51cto.co...

IT小白白
2012/07/30
0
0
Python基础班每日整理(一)

01_Linux基础 1.操作系统的作用? 操作系统是配置在计算机硬件上的第一层软件,主要作用是管理好硬件设备。 2.Linux中根目录和家目录分别用什么表示? /表示根目录、~表示家目录 3.Linux中相...

我是小谷粒
2018/06/28
0
0
5本必读Python入门书籍,你都看过吗?(附福利)

今天技术学派为大家准备了5本Python入门书籍,除了书籍小编还整理了3个常用的资源网站分享给大家。 1.Python基础教程 《Python基础教程》是经典的Python入门教程书籍,本书层次鲜明,结构严谨...

Python燕大侠
2018/06/07
0
0
Python对象持久化学习整理

随着项目的深入,python对象持久化问题也随之而来。而在这之前,对于python对象持久化还停留在pickle时代,而这已无法满足当前项目发展的需要了,于是只好借助google疯狂的学习了一把,同时也...

索隆
2012/05/24
0
0
一份Python基础知识思维导图

如果说起最近几年发展势头比较猛的编程语言,可能想到最多的就是Python了。简单易用,模块丰富,功能强大,特别是机器学习的火爆,更是把Python推上了新的热度。相信点进来看的你也一定对Pyt...

JustMe23
2018/05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

编码规范

4.、编码时的一些建议 1、尽量指定类、方法的final修饰符——虚拟机会想办法内联所有的final方法来减少方法执行时创建栈帧的数量,从而降低栈溢出的风险 2、尽量重用对象——重复new对象会增...

呵呵哒灬
39分钟前
2
0
第一个docker化的java应用

Docker 思想 集装箱 标准化:运输方式/存储方式/API 接口 隔离

BeanHo
39分钟前
1
0
数据库技术-Mysql主从复制与数据备份

数据库技术-Mysql 主从复制的原理: MySQL中数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”...

须臾之余
昨天
13
0
Git远程仓库——GitHub的使用(一)

Git远程仓库——GitHub的使用(一) 一 、 Git远程仓库 由于你的本地仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一下设置: 步骤一、 创建SSH key 在用户主目录下,看看有没有.ss...

lwenhao
昨天
4
0
SpringBoot 整合

springBoot 整合模板引擎 SpringBoot 整合Mybatis SpringBoot 整合redis SpringBoot 整合定时任务 SpringBoot 整合拦截器...

细节探索者
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部