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

os是python自帶的庫,所以無需另外安裝,直接 import 即可
編寫核心代碼
壓縮文件核心代碼:
def zip_file():
zip_name = path.get() +'.zip' # 獲取絕對路徑然后給壓縮文件加上.zip結(jié)尾
z = zipfile.ZipFile(zip_name,'w',zipfile.ZIP_DEFLATED) # 寫入.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) # 寫入
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里面的語句,如果不是執(zhí)行else里面的語句
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ā)給你女朋友使用,但是她的電腦沒有安裝python環(huán)境,安裝又顯得麻煩那怎么弄?沒事,我們可以結(jié)合tkinter圖形界面來整合一下
安裝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)入目錄操作庫 import tkinter.messagebox # 彈出消息框 import tkinter.filedialog # 導(dǎo)入操作文件的庫
整合代碼
然后整合上面兩個(gè)核心代碼
既然要有圖形界面,首先得有界面是吧
root = Tk() # 初始化 root.mainloop() # 顯示窗口

有了界面之后就是把組件(按鈕,標(biāo)簽,輸入框)噼里啪啦的加上去就行了,這里就不具體描述了
具體代碼實(shí)現(xiàn):
from tkinter import * # 導(dǎo)入tkinter的所有組件 from tkinter.filedialog import askdirectory # 導(dǎo)入目錄操作庫 import tkinter.messagebox # 彈出消息框 import tkinter.filedialog # 導(dǎo)入操作文件的庫 # 界面代碼實(shí)現(xiàn) def main(): # label標(biāo)簽 grid括號中的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ī)制,建議將圖片保存下來直接上傳(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)
壓縮之后的文件大小為:

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

可以看到RAR壓縮的好像更小點(diǎn),但是無太大差別,且壓縮速度上RAR要慢一點(diǎn)。反正這是我們自己做的,能做到這樣也挺不錯(cuò)了是吧
安裝pyinstaller模塊
編寫完代碼之后就是將代碼進(jìn)行打包了,打包需要用到的模塊就是 pyinstaller ,安裝該模塊也是非常簡單,只需要使用下面的命令
pip install pyinstaller
打包程序?yàn)榭蓤?zhí)行文件
安裝成功之后再次輸入命令進(jìn)行打包
pyinstaller -F -w 你的文件名.py
打包了,打包需要用到的模塊就是 pyinstaller ,安裝該模塊也是非常簡單,只需要使用下面的命令
pip install pyinstaller
打包程序?yàn)榭蓤?zhí)行文件
安裝成功之后再次輸入命令進(jìn)行打包
pyinstaller -F -w 你的文件名.py
然后會在dist目錄下生成一個(gè) “你的文件名的.exe” 的可執(zhí)行文件,那就大功告成了
總結(jié)
以上所述是小編給大家介紹的使用python制作一個(gè)解壓縮軟件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
- Python腳本破解壓縮文件口令實(shí)例教程(zipfile)
- 詳解Python 解壓縮文件
- Python實(shí)現(xiàn)壓縮文件夾與解壓縮zip文件的方法
- python下解壓縮zip文件并刪除文件的實(shí)例
- Python實(shí)現(xiàn)壓縮和解壓縮ZIP文件的方法分析
- Python實(shí)現(xiàn)向服務(wù)器請求壓縮數(shù)據(jù)及解壓縮數(shù)據(jù)的方法示例
- 使用Python讀寫及壓縮和解壓縮文件的示例
- Python壓縮解壓縮zip文件及破解zip文件密碼的方法
- 使用Python壓縮和解壓縮zip文件的教程
- Python壓縮和解壓縮zip文件
- python 實(shí)現(xiàn)壓縮和解壓縮的示例
相關(guān)文章
Python實(shí)現(xiàn)求一個(gè)集合所有子集的示例
今天小編就為大家分享一篇Python 實(shí)現(xiàn)求一個(gè)集合所有子集的示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python使用正則表達(dá)式實(shí)現(xiàn)爬蟲數(shù)據(jù)抽取
這篇文章主要介紹了Python使用正則表達(dá)式實(shí)現(xiàn)爬蟲數(shù)據(jù)抽取,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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ǔ)語法詳解
這篇文章主要介紹了VSCODE配置Markdown及Markdown基礎(chǔ)語法詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
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)知識,在文章結(jié)尾給大家提供了項(xiàng)目源碼,需要的朋友可以參考下2021-11-11

