這期內容當中小編將會給大家帶來有關如何用Python寫一個帶圖形界面的文件壓縮軟件,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創新互聯建站主營惠農網站建設的網絡公司,主營網站建設方案,成都app開發,惠農h5小程序開發搭建,惠農網站營銷推廣歡迎惠農等地區企業咨詢文件壓縮和解壓我們在日常工作學習中會經常用到,比如winrar、快壓、好壓等壓縮軟件
打開之后的界面長這個樣子:
壓縮完成后是這個樣子:
解壓完成后是這個樣子:
首先不像商業壓縮軟件,我把功能簡化了很多,只實現主要的壓縮(壓縮文件和文件夾)和解壓功能。
Python有一些第三方壓縮和解壓的庫,我選用了zipfile,把文件壓縮為.zip,圖形化選用了pyqt5,因為之前翻譯軟件實現過圖形化,所以就偷懶拿過來改一下用。
程序的運行流程是(對照上面的圖看):
首先在下拉框選擇是“壓縮”還是“解壓”,然后點擊“選擇“按鈕選擇要執行的文件,選擇完成后點擊右下角的“開始”按鈕,軟件就開始執行了。
整個過程比較簡單,主要兩個地方卡殼了一下,耗了點時間去解決。
Python壓縮程序第一個卡殼地方是:
因為要實現壓縮文件和文件夾的功能,所以當點擊圖形界面的”選擇“按鈕時要支持既能選擇文件,又能選擇文件夾。
但是Qt的QFileDialog不支持這樣的實現,提供的控件要么只能選文件,要么只能選文件夾,對此花了好幾個小時去研究和查閱資料,得出的結論是要繼承QFileDialog類,然后重寫這個類的部分方法來,實現既能選文件又能選文件夾的功能,于是趟坑去實現了一把,對Qt本身的機制也是一知半解,所以調試了很久。
重新實現的QFileDialog類代碼如下:
class FileDialog(QtWidgets.QFileDialog): def __init__(self, *args, **kwargs): super(FileDialog, self).__init__(*args, **kwargs) self.setOption(QtWidgets.QFileDialog.DontUseNativeDialog, True) self.setFileMode(QtWidgets.QFileDialog.ExistingFiles) self.tree = self.findChild(QtWidgets.QTreeView) self._selFile = '' def accept(self): inds = self.tree.selectionModel().selectedIndexes() self._selFile = os.path.join(str(self.directory().absolutePath()),str(inds[0].data())) print('_selfile:',self._selFile) self.hide() def selectedFiles(self): return self._selFile
第二個Pyhthon壓縮程序卡殼的地方是:
我把整個程序都寫完了,測試了幾把沒有問題,自己沾沾自喜這個程序真完美。第二天又想起了,想再完整的測試一下,畢竟要寫在猿人學公眾號上,被人挑刺心里總是不好受的。結果發現壓縮時會把你的整個文件路徑上的文件夾都壓縮進去。
舉個栗子:
比如要壓縮的文件路徑是:D:/log/nginx/access.log
壓縮是:D:/log/nginx/access.zip
解壓后,正常情況應該是把文件還原為:
D:/log/nginx/access/access.log
但是實際上解壓后變成了:
D:/log/nginx/access/log/nginx/access.log
就是程序在壓縮的時候把文件路徑上的目錄也都壓縮進去了。
這也調試了好一會,開始以為是把文件路徑給傳錯了。
結果是自己對zipfile的使用沒研究清楚,錯誤示例如下:
z = zipfile.Zipfile('D:/log/nginx/access.zip') z.write('D:/log/nginx/access.log') z.close()
這樣就會把文件路徑上的目錄全都壓縮進去。正確的用法是:
z = zipfile.Zipfile('D:/log/nginx/access.zip') z.write('D:/log/nginx/access.log','access.log') z.close()
為什么頭一天測試沒有發現這個問題呢?
因為我之前測試要壓縮的文件路徑是這樣的:D:/access.log
文件在根目錄下面,文件路徑上沒有其他目錄了,所以就發現不了。
這也告訴我們測試一定要多角度,多場景測試啊。
兩個Python源文件,200多行代碼搞定,再一次感嘆用Python就是方便。
一樣可以使用pyinstaller把程序打包成exe文件,就可以把exe文件發給其他朋友使用了,他們的電腦沒有Python開發環境也能運行此程序,當然為了程序穩定,你最好多在幾臺電腦上測試一下。
打包命令:
pyinstaller -F -w -i icon.ico transdocx.py
一個zip_main.py文件(圖形界面),一個zip_console.py文件(壓縮功能),開發圖形界面程序通常是這樣,把圖形界面部分和業務功能部分要分離,相互不干擾,也方便以后修改。
程序運行方法:python zip_main.py
1.這個程序只能壓縮和解壓zip文件,不支持rar、tar。
2.沒有嚴格的容錯處理
3.不支持加密壓縮和解壓
上述就是小編為大家分享的如何用Python寫一個帶圖形界面的文件壓縮軟件了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯-成都網站建設公司行業資訊頻道。
文章名稱:如何用Python寫一個帶圖形界面的文件壓縮軟件-創新互聯
標題路徑:http://vcdvsql.cn/article10/ppjgo.html
成都網站建設公司_創新互聯,為您提供定制網站、ChatGPT、靜態網站、標簽優化、虛擬主機、網站導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯