前言

什么是效率?简单就是效率!但是想要自己做的小程序足够美观可不是一件简单的事。一开始想做个小程序思路就是有个普通的button,一键使用就好了。但是写下来还是发现没用前端和结构话的编程后期维护很麻烦,所以以后的程序格式都应该尽量符合业界规范。世界上那么多种解决问题的方法,为什么大家都认可那么一两钟?肯定是有他的道理的。好了废话不多说,现在开始设计我们的小程序。

一、小程序构建思路

1.需求

首先我们先确定需求:

我们需要一个可以选择目录,自动处理该目录下面的文件。我们知道文件它是有类型的,而我们可以通过文件的后缀名称来分类。其中有txt、json、pdf、word等。

第二个需求能够选中解压文件并且判断该文件是否为压缩文件,是压缩文件则进行解压。

以上就是我们写这个小程序的目的。

2.技术

首先我们肯定Python进行编程,需要用到其他的库。其中我们需要一个界面可以进行交互。该界面可以选择我们的功能模式。还有一个选择目录的功能,能够将目录路径读取并且显示。那么我们先从界面来考虑,既然是小程序那就设计成窗口的样子。

第一个技术依赖:Python tkinter

该库Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。 直接安装该库即可:

pip install tkinter

第二个技术依赖:os库、shutil

shutil是 篇python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建、删除、查看等方法,还提供了对文件以及目录的路径操作。shutil模块提供了移动、复制、 压缩、解压等操作,恰好与os互补,共同一起使用,基本能完成所有文件的操作。是一个非常重要的模块。

这些库都是python自带标准库里面自带的,直接引入就行。

第三个技术依赖: zipfile

zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的。也是自带的库,调用就好。

二、编程实现

1.引入库

from tkinter import *
import os
from tkinter.filedialog import askdirectory
from tkinter.filedialog import askopenfilename
from tkinter import messagebox
import shutil
import zipfile

2.窗口调整

首先创建出一个界面,我们需要定义该界面窗口的长和宽,以及窗口名称和窗口展示位置:

app=Tk()
app_w=app.winfo_screenwidth()
app_h=app.winfo_height()
width=350
heigh=260
x=(app_w-width)/2
y=(app_h-heigh)/2
app.geometry('350x260+600+300')
#app.geometry("%dx%d+%d+%d" % (width,heigh,x,y))
app.title("文件助手")

之后我们要把获取的路径显示出来:

Label(app,text='picture',image=photo).pack()
Label(app,text='文件助手',font={'Airal',20,'bold'}).place(x=140,y=1,anchor='nw')
lable_path=Label(app,name='path')
lable_path.place(x=85,y=90,anchor='nw')
f_name=''

3.选择目录

 选择目录后,保存目录的路径

def select_dir():
    global f_name
    f_name = askdirectory()
    lable_path['text']=f_name

获取文件目录和文件名称,创建目标目录,并把统一类别文件移动到该目录:

def clean(f):
    forder_name = f_name + '/' + f.split('.')[-1]
    file_name = f_name + '/' + f
    if not os.path.exists(forder_name):
        os.makedirs(forder_name)
    elif os.path.exists(forder_name + '/' + f):
        return
    else:
        shutil.move(file_name,forder_name)

根据文件的后缀进行归类:

def sort():
    count=0
    for f in os.listdir(f_name):
        if '.' in f:
            clean(f)
            count += 1
    messagebox.showinfo(title='提示',message='你已经成功整理了%d个文件'%count)

最后我们来设计解压缩功能,这里先对文件进行判断是否为压缩文件,之后进行解压到该目录:

def unzip_file():
    zip_name = askopenfilename()#压缩包名
    r = zipfile.is_zipfile(zip_name)
    if r:
        fz = zipfile.ZipFile(zip_name)
        for file in fz.namelist():
            print(file)
            fz.extract(file, f_name)
        messagebox.showinfo(title='提示', message='已解压该文件')
    else:
        messagebox.showinfo(title='提示', message='这不是压缩文件')

最后我们再给我们的窗口设定按钮接口:

bt1=Button(app,text='选择目录',command=select_dir)
bt1.place(x=50,y=170,anchor='nw')
bt1=Button(app,text='整理文件',command=sort)
bt1.place(x=145,y=170,anchor='nw')
bt1=Button(app,text='解压文件',command=unzip_file)
bt1.place(x=235,y=170,anchor='nw')
app.mainloop()

大家还可以插入自己想要的图片,更加美观:

Python小程序编程实现一键自动整理文件解压文件

选择目录后自动保存路径显示:

Python小程序编程实现一键自动整理文件解压文件

我们可以进行测试,在测试目录下创建不同类型的文件:

Python小程序编程实现一键自动整理文件解压文件

 选择目录分类:

Python小程序编程实现一键自动整理文件解压文件

效果:

Python小程序编程实现一键自动整理文件解压文件

以上就是Python小程序编程实现一键自动整理文件解压文件的详细内容,更多关于Python自动整理解压文件的资料请关注其它相关文章!

原文地址:https://juejin.cn/post/7200549600591200293

相关文章: