使用python制作一個(gè)解壓縮軟件
python實(shí)現(xiàn)解壓縮的重要模塊就是——zipfile,其次是os
安裝zipfile模塊
首先得安裝zipfile模塊,打開(kāi)cmd輸入一下命令即可安裝
pip install zipfile

os是python自帶的庫(kù),所以無(wú)需另外安裝,直接 import 即可
編寫(xiě)核心代碼
壓縮文件核心代碼:
def zip_file():
zip_name = path.get() +'.zip' # 獲取絕對(duì)路徑然后給壓縮文件加上.zip結(jié)尾
z = zipfile.ZipFile(zip_name,'w',zipfile.ZIP_DEFLATED) # 寫(xiě)入.zip
for dirpath, dirnames, filenames in os.walk(path.get()):# 使用os遍歷目錄路徑,目錄名,文件名
fpath = dirpath.replace(path.get(),'') # 獲取目錄路徑
fpath = fpath and fpath + os.sep or ''
for filename in filenames: # 迭代文件名
z.write(os.path.join(dirpath, filename),fpath+filename) # 寫(xiě)入
z.close() # 關(guān)閉資源,以免占用內(nèi)存
zip_file_message() # 調(diào)用zip_file_message彈出信息框
解壓文件核心代碼:
def unzip_file():
r = zipfile.is_zipfile(filename.get()) # 判斷是否為壓縮文件以.zip為判斷依據(jù)
if r: # 如果是則執(zhí)行if里面的語(yǔ)句,如果不是執(zhí)行else里面的語(yǔ)句
fz = zipfile.ZipFile(filename.get(), 'r') # 讀取壓縮文件
for file in fz.namelist(): # 遍歷文件
fz.extract(file, outputfile.get()) # 輸出文件
unzip_file_message() # 調(diào)用unzip_file_message彈出信息框
else:
failed() # 調(diào)用failed彈出信息框
以上基本可以實(shí)現(xiàn)文件的解壓和壓縮了,但是如果想給別人也能使用呢?比如你想發(fā)給你女朋友使用,但是她的電腦沒(méi)有安裝python環(huán)境,安裝又顯得麻煩那怎么弄?沒(méi)事,我們可以結(jié)合tkinter圖形界面來(lái)整合一下
安裝tkinter模塊
tkinter是一個(gè)圖形界面的模塊,類似的有pyqt,感興趣的朋友可以去網(wǎng)上了解一下
安裝tkinter,只需使用下面的命令即可安裝
pip install tkinter

安裝成功后,導(dǎo)入我們需要使用的組件
from tkinter import * # 導(dǎo)入tkinter的所有組件 from tkinter.filedialog import askdirectory # 導(dǎo)入目錄操作庫(kù) import tkinter.messagebox # 彈出消息框 import tkinter.filedialog # 導(dǎo)入操作文件的庫(kù)
整合代碼
然后整合上面兩個(gè)核心代碼
既然要有圖形界面,首先得有界面是吧
root = Tk() # 初始化 root.mainloop() # 顯示窗口

有了界面之后就是把組件(按鈕,標(biāo)簽,輸入框)噼里啪啦的加上去就行了,這里就不具體描述了
具體代碼實(shí)現(xiàn):
from tkinter import * # 導(dǎo)入tkinter的所有組件 from tkinter.filedialog import askdirectory # 導(dǎo)入目錄操作庫(kù) import tkinter.messagebox # 彈出消息框 import tkinter.filedialog # 導(dǎo)入操作文件的庫(kù) # 界面代碼實(shí)現(xiàn) def main(): # label標(biāo)簽 grid括號(hào)中的row代表你的label是放在第幾行,column是放在第幾列 Label(root,text = "壓縮目錄路徑:").grid(row = 0, column = 0) # Entry是獲取輸入 Entry(root, textvariable = path).grid(row = 0, column = 1) # 操作按鈕 Button(root, text = "目錄選擇", command = selectPath).grid(row = 0, column = 2) # Label標(biāo)簽 Label(root,text = "解壓目錄路徑:").grid(row = 1, column = 0) # Entry是獲取輸入 Entry(root, textvariable = filename).grid(row = 1, column = 1) # 操作按鈕 Button(root, text = "文件選擇", command = selectFile).grid(row = 1, column = 2) # Label標(biāo)簽 Label(root,text = "解壓到:").grid(row = 2, column = 0) # Entry是獲取輸入 Entry(root, textvariable = outputfile).grid(row = 2, column = 1) # 操作按鈕 Button(root, text = "解壓路徑選擇", command = outputFlie).grid(row = 2, column = 2) # 操作按鈕 Button(root,text="壓縮文件",command=zip_file).grid(row=3,column=0) # 操作按鈕 Button(root,text="解壓文件",command=unzip_file).grid(row=3,column=2) # 操作按鈕 Button(root,text="退出程序",command=root.quit).grid(row=4,column=1) #顯示操作界面 root.mainloop() if __name__ == '__main__': root = Tk() # 初始化 path = StringVar() # 顯示路徑名 filename = StringVar() # 顯示文件路徑名 outputfile = StringVar() # 顯示解壓后的文件路徑名 main() # 調(diào)用main函數(shù)
最終的界面實(shí)現(xiàn)如下:

效果展示

比如我們現(xiàn)在壓縮一個(gè)400M的文件在這里插入圖片描述
![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-xU5MTifq-1573462815805)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20191111164233006.png)]](http://img.jbzj.com/file_images/article/201911/2019111311180839.png)
壓縮之后的文件大小為:

壓縮的速度還是挺快的,對(duì)比一下RAR壓縮之后的大小

可以看到RAR壓縮的好像更小點(diǎn),但是無(wú)太大差別,且壓縮速度上RAR要慢一點(diǎn)。反正這是我們自己做的,能做到這樣也挺不錯(cuò)了是吧
安裝pyinstaller模塊
編寫(xiě)完代碼之后就是將代碼進(jìn)行打包了,打包需要用到的模塊就是 pyinstaller ,安裝該模塊也是非常簡(jiǎn)單,只需要使用下面的命令
pip install pyinstaller
打包程序?yàn)榭蓤?zhí)行文件
安裝成功之后再次輸入命令進(jìn)行打包
pyinstaller -F -w 你的文件名.py
打包了,打包需要用到的模塊就是 pyinstaller ,安裝該模塊也是非常簡(jiǎn)單,只需要使用下面的命令
pip install pyinstaller
打包程序?yàn)榭蓤?zhí)行文件
安裝成功之后再次輸入命令進(jìn)行打包
pyinstaller -F -w 你的文件名.py
然后會(huì)在dist目錄下生成一個(gè) “你的文件名的.exe” 的可執(zhí)行文件,那就大功告成了
總結(jié)
以上所述是小編給大家介紹的使用python制作一個(gè)解壓縮軟件,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- Python腳本破解壓縮文件口令實(shí)例教程(zipfile)
- 詳解Python 解壓縮文件
- Python實(shí)現(xiàn)壓縮文件夾與解壓縮zip文件的方法
- python下解壓縮zip文件并刪除文件的實(shí)例
- Python實(shí)現(xiàn)壓縮和解壓縮ZIP文件的方法分析
- Python實(shí)現(xiàn)向服務(wù)器請(qǐng)求壓縮數(shù)據(jù)及解壓縮數(shù)據(jù)的方法示例
- 使用Python讀寫(xiě)及壓縮和解壓縮文件的示例
- Python壓縮解壓縮zip文件及破解zip文件密碼的方法
- 使用Python壓縮和解壓縮zip文件的教程
- Python壓縮和解壓縮zip文件
- python 實(shí)現(xiàn)壓縮和解壓縮的示例
相關(guān)文章
python編寫(xiě)彈球游戲的實(shí)現(xiàn)代碼
這篇文章主要介紹了python編寫(xiě)彈球游戲的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-03-03
使用Python腳本將Bing的每日?qǐng)D片作為桌面的教程
這篇文章主要介紹了使用Python腳本將Bing的每日?qǐng)D片作為桌面的教程,示例基于Windows操作系統(tǒng)環(huán)境實(shí)現(xiàn),需要的朋友可以參考下2015-05-05
Python實(shí)現(xiàn)求一個(gè)集合所有子集的示例
今天小編就為大家分享一篇Python 實(shí)現(xiàn)求一個(gè)集合所有子集的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python使用正則表達(dá)式實(shí)現(xiàn)爬蟲(chóng)數(shù)據(jù)抽取
這篇文章主要介紹了Python使用正則表達(dá)式實(shí)現(xiàn)爬蟲(chóng)數(shù)據(jù)抽取,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Python實(shí)現(xiàn)輸出某區(qū)間范圍內(nèi)全部素?cái)?shù)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)輸出某區(qū)間范圍內(nèi)全部素?cái)?shù)的方法,涉及Python數(shù)值運(yùn)算、排序、判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
VSCODE配置Markdown及Markdown基礎(chǔ)語(yǔ)法詳解
這篇文章主要介紹了VSCODE配置Markdown及Markdown基礎(chǔ)語(yǔ)法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
如何用itertools解決無(wú)序排列組合的問(wèn)題
下面小編就為大家?guī)?lái)一篇如何用itertools解決無(wú)序排列組合的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
python利用后綴表達(dá)式實(shí)現(xiàn)計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了python利用后綴表達(dá)式實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-02-02
超詳細(xì)OpenMV與STM32單片機(jī)通信 附完整源碼
這篇文章主要介紹了OpenMV與STM32單片機(jī)通信的相關(guān)知識(shí),在文章結(jié)尾給大家提供了項(xiàng)目源碼,需要的朋友可以參考下2021-11-11

