一键自动整理文件/解压文件-Python超实用小程序编程

简介: 一键自动整理文件/解压文件-Python超实用小程序编程

前言


什么是效率?简单就是效率!但是想要自己做的小程序足够美观可不是一件简单的事。一开始想做个小程序思路就是有个普通的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()

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

e94d2e78b622458b9b280a40f21748b4.png

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

250106b64c5146eeb7ab590d61f97bd3.png

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

bf233d8418e948ed8daded0061865ba7.png

选择目录分类:

e772ebf7256e443a8fd4d5174c2771ff.png


效果:

96fb28ebbcb14c40bf066dc7c509cf19.png

目录
相关文章
|
2天前
|
存储 Python
一文让你搞懂 Python 的 pyc 文件
一文让你搞懂 Python 的 pyc 文件
27 15
|
3天前
|
数据挖掘 索引 Python
Python数据挖掘编程基础3
字典在数学上是一个映射,类似列表但使用自定义键而非数字索引,键在整个字典中必须唯一。可以通过直接赋值、`dict`函数或`dict.fromkeys`创建字典,并通过键访问元素。集合是一种不重复且无序的数据结构,可通过花括号或`set`函数创建,支持并集、交集、差集和对称差集等运算。
14 9
|
2天前
|
存储 开发者 Python
探索Python编程的奥秘
【9月更文挑战第29天】本文将带你走进Python的世界,通过深入浅出的方式,解析Python编程的基本概念和核心特性。我们将一起探讨变量、数据类型、控制结构、函数等基础知识,并通过实际代码示例,让你更好地理解和掌握Python编程。无论你是编程新手,还是有一定基础的开发者,都能在这篇文章中找到新的启示和收获。让我们一起探索Python编程的奥秘,开启编程之旅吧!
|
3天前
|
算法 Python
Python编程的函数—内置函数
Python编程的函数—内置函数
|
3天前
|
存储 索引 Python
Python编程的常用数据结构—列表
Python编程的常用数据结构—列表
|
3天前
|
数据挖掘 Python
Python数据挖掘编程基础8
在Python中,默认环境下并不会加载所有功能,需要手动导入库以增强功能。Python内置了诸多强大库,例如`math`库可用于复杂数学运算。导入库不仅限于`import 库名`,还可以通过别名简化调用,如`import math as m`;也可指定导入库中的特定函数,如`from math import exp as e`;甚至直接导入库中所有函数`from math import *`。但需注意,后者可能引发命名冲突。读者可通过`help('modules')`查看已安装模块。
8 0
|
3天前
|
人工智能 数据挖掘 Serverless
Python数据挖掘编程基础
函数式编程中的`reduce`函数用于对可迭代对象中的元素进行累积计算,不同于逐一遍历的`map`函数。例如,在Python3中,计算n的阶乘可以使用`reduce`(需从`funtools`库导入)实现,也可用循环命令完成。另一方面,`filter`函数则像一个过滤器,用于筛选列表中符合条件的元素,同样地功能也可以通过列表解析来实现。使用这些函数不仅使代码更加简洁,而且由于其内部循环机制,执行效率通常高于普通的`for`或`while`循环。
7 0
|
3天前
|
分布式计算 数据挖掘 Serverless
Python数据挖掘编程基础6
函数式编程(Functional Programming)是一种编程范型,它将计算机运算视为数学函数计算,避免程序状态及易变对象的影响。在Python中,函数式编程主要通过`lambda`、`map`、`reduce`、`filter`等函数实现。例如,对于列表`a=[5,6,7]`,可通过列表解析`b=[i+3 for i in a]`或`map`函数`b=map(lambda x:x+3, a)`实现元素加3的操作,两者输出均为`[8,9,10]`。尽管列表解析代码简洁,但其本质仍是for循环,在Python中效率较低;而`map`函数不仅功能相同,且执行效率更高。
6 0
|
3天前
|
数据挖掘 Python
Python数据挖掘编程基础5
函数是Python中用于提高代码效率和减少冗余的基本数据结构,通过封装程序逻辑实现结构化编程。用户可通过自定义或函数式编程方式设计函数。在Python中,使用`def`关键字定义函数,如`def pea(x): return x+1`,且其返回值形式多样,可为列表或多个值。此外,Python还支持使用`lambda`定义简洁的行内函数,例如`c=lambda x:x+1`。
9 0
|
3天前
|
数据挖掘 Python
Python数据挖掘编程基础
判断与循环是编程的基础,Python中的`if`、`elif`、`else`结构通过条件句来执行不同的代码块,不使用花括号,依赖缩进区分代码层次。错误缩进会导致程序出错。Python支持`for`和`while`循环,`for`循环结合`range`生成序列,简洁直观。正确缩进不仅是Python的要求,也是一种良好的编程习惯。
8 0
下一篇
无影云桌面