Python小程序編程實(shí)現(xiàn)一鍵自動(dòng)整理文件解壓文件
前言
什么是效率?簡(jiǎn)單就是效率!但是想要自己做的小程序足夠美觀可不是一件簡(jiǎn)單的事。一開始想做個(gè)小程序思路就是有個(gè)普通的button,一鍵使用就好了。但是寫下來(lái)還是發(fā)現(xiàn)沒(méi)用前端和結(jié)構(gòu)話的編程后期維護(hù)很麻煩,所以以后的程序格式都應(yīng)該盡量符合業(yè)界規(guī)范。世界上那么多種解決問(wèn)題的方法,為什么大家都認(rèn)可那么一兩鐘?肯定是有他的道理的。好了廢話不多說(shuō),現(xiàn)在開始設(shè)計(jì)我們的小程序。
一、小程序構(gòu)建思路
1.需求
首先我們先確定需求:
我們需要一個(gè)可以選擇目錄,自動(dòng)處理該目錄下面的文件。我們知道文件它是有類型的,而我們可以通過(guò)文件的后綴名稱來(lái)分類。其中有txt、json、pdf、word等。
第二個(gè)需求能夠選中解壓文件并且判斷該文件是否為壓縮文件,是壓縮文件則進(jìn)行解壓。
以上就是我們寫這個(gè)小程序的目的。
2.技術(shù)
首先我們肯定Python進(jìn)行編程,需要用到其他的庫(kù)。其中我們需要一個(gè)界面可以進(jìn)行交互。該界面可以選擇我們的功能模式。還有一個(gè)選擇目錄的功能,能夠?qū)⒛夸浡窂阶x取并且顯示。那么我們先從界面來(lái)考慮,既然是小程序那就設(shè)計(jì)成窗口的樣子。
第一個(gè)技術(shù)依賴:Python tkinter
該庫(kù)Tkinter 模塊(Tk 接口)是 Python 的標(biāo)準(zhǔn) Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多數(shù)的 Unix 平臺(tái)下使用,同樣可以應(yīng)用在 Windows 和 Macintosh 系統(tǒng)里。Tk8.0 的后續(xù)版本可以實(shí)現(xiàn)本地窗口風(fēng)格,并良好地運(yùn)行在絕大多數(shù)平臺(tái)中。 直接安裝該庫(kù)即可:
pip install tkinter
第二個(gè)技術(shù)依賴:os庫(kù)、shutil
shutil是 篇python 中的高級(jí)文件操作模塊,與os模塊形成互補(bǔ)的關(guān)系,os主要提供了文件或文件夾的新建、刪除、查看等方法,還提供了對(duì)文件以及目錄的路徑操作。shutil模塊提供了移動(dòng)、復(fù)制、 壓縮、解壓等操作,恰好與os互補(bǔ),共同一起使用,基本能完成所有文件的操作。是一個(gè)非常重要的模塊。
這些庫(kù)都是python自帶標(biāo)準(zhǔn)庫(kù)里面自帶的,直接引入就行。
第三個(gè)技術(shù)依賴: zipfile
zipfile是python里用來(lái)做zip格式編碼的壓縮和解壓縮的,由于是很常見的zip格式,所以這個(gè)模塊使用頻率也是比較高的。也是自帶的庫(kù),調(diào)用就好。
二、編程實(shí)現(xiàn)
1.引入庫(kù)
from tkinter import * import os from tkinter.filedialog import askdirectory from tkinter.filedialog import askopenfilename from tkinter import messagebox import shutil import zipfile
2.窗口調(diào)整
首先創(chuàng)建出一個(gè)界面,我們需要定義該界面窗口的長(zhǎng)和寬,以及窗口名稱和窗口展示位置:
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("文件助手")
之后我們要把獲取的路徑顯示出來(lái):
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
獲取文件目錄和文件名稱,創(chuàng)建目標(biāo)目錄,并把統(tǒng)一類別文件移動(dòng)到該目錄:
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)
根據(jù)文件的后綴進(jìn)行歸類:
def sort(): count=0 for f in os.listdir(f_name): if '.' in f: clean(f) count += 1 messagebox.showinfo(title='提示',message='你已經(jīng)成功整理了%d個(gè)文件'%count)
最后我們來(lái)設(shè)計(jì)解壓縮功能,這里先對(duì)文件進(jìn)行判斷是否為壓縮文件,之后進(jìn)行解壓到該目錄:
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='這不是壓縮文件')
最后我們?cè)俳o我們的窗口設(shè)定按鈕接口:
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()
大家還可以插入自己想要的圖片,更加美觀:
選擇目錄后自動(dòng)保存路徑顯示:
我們可以進(jìn)行測(cè)試,在測(cè)試目錄下創(chuàng)建不同類型的文件:
選擇目錄分類:
效果:
以上就是Python小程序編程實(shí)現(xiàn)一鍵自動(dòng)整理文件解壓文件的詳細(xì)內(nèi)容,更多關(guān)于Python自動(dòng)整理解壓文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python os.listdir與os.walk實(shí)現(xiàn)獲取路徑詳解
這篇文章主要介紹了Python使用os.listdir和os.walk獲取文件路徑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-10-10使用Python機(jī)器學(xué)習(xí)降低靜態(tài)日志噪聲
今天小編就為大家分享一篇關(guān)于使用Python和機(jī)器學(xué)習(xí)的靜態(tài)日志噪聲的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-09-09Django調(diào)用支付寶接口代碼實(shí)例詳解
這篇文章主要介紹了Django調(diào)用支付寶接口代碼實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Python數(shù)據(jù)庫(kù)sqlite3圖文實(shí)例詳解
SQLite是一個(gè)進(jìn)程內(nèi)的庫(kù),實(shí)現(xiàn)了自給自足的、無(wú)服務(wù)器的、零配置的、事務(wù)性的SQL數(shù)據(jù)庫(kù)引擎,下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)庫(kù)sqlite3的相關(guān)資料,需要的朋友可以參考下2022-09-09Python 找出出現(xiàn)次數(shù)超過(guò)數(shù)組長(zhǎng)度一半的元素實(shí)例
這篇文章主要介紹了Python 找出出現(xiàn)次數(shù)超過(guò)數(shù)組長(zhǎng)度一半的元素實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05Python 模擬動(dòng)態(tài)產(chǎn)生字母驗(yàn)證碼圖片功能
這篇文章主要介紹了Python 模擬動(dòng)態(tài)產(chǎn)生字母驗(yàn)證碼圖片,這里給大家介紹了pillow模塊的使用,需要的朋友可以參考下2019-12-12