bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

如何用Python寫一個帶圖形界面的文件壓縮軟件-創新互聯

這期內容當中小編將會給大家帶來有關如何用Python寫一個帶圖形界面的文件壓縮軟件,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創新互聯建站主營惠農網站建設的網絡公司,主營網站建設方案,成都app開發,惠農h5小程序開發搭建,惠農網站營銷推廣歡迎惠農等地區企業咨詢

文件壓縮和解壓我們在日常工作學習中會經常用到,比如winrar、快壓、好壓等壓縮軟件

如何用Python寫一個帶圖形界面的文件壓縮軟件

打開之后的界面長這個樣子:

如何用Python寫一個帶圖形界面的文件壓縮軟件

壓縮完成后是這個樣子:

如何用Python寫一個帶圖形界面的文件壓縮軟件

解壓完成后是這個樣子:

如何用Python寫一個帶圖形界面的文件壓縮軟件

Python壓縮軟件程序實現和分析過程

首先不像商業壓縮軟件,我把功能簡化了很多,只實現主要的壓縮(壓縮文件和文件夾)和解壓功能。

Python有一些第三方壓縮和解壓的庫,我選用了zipfile,把文件壓縮為.zip,圖形化選用了pyqt5,因為之前翻譯軟件實現過圖形化,所以就偷懶拿過來改一下用。

程序的運行流程是(對照上面的圖看):

首先在下拉框選擇是“壓縮”還是“解壓”,然后點擊“選擇“按鈕選擇要執行的文件,選擇完成后點擊右下角的“開始”按鈕,軟件就開始執行了。

整個過程比較簡單,主要兩個地方卡殼了一下,耗了點時間去解決。

Python壓縮程序第一個卡殼地方是:

因為要實現壓縮文件和文件夾的功能,所以當點擊圖形界面的”選擇“按鈕時要支持既能選擇文件,又能選擇文件夾。

如何用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就是方便。

把Python壓縮程序打包成exe文件

一樣可以使用pyinstaller把程序打包成exe文件,就可以把exe文件發給其他朋友使用了,他們的電腦沒有Python開發環境也能運行此程序,當然為了程序穩定,你最好多在幾臺電腦上測試一下。

打包命令:

pyinstaller -F -w -i icon.ico transdocx.py

Python壓縮程序文件結構:

一個zip_main.py文件(圖形界面),一個zip_console.py文件(壓縮功能),開發圖形界面程序通常是這樣,把圖形界面部分和業務功能部分要分離,相互不干擾,也方便以后修改。

程序運行方法:python zip_main.py

Python壓縮程序****不足之處

1.這個程序只能壓縮和解壓zip文件,不支持rar、tar。

2.沒有嚴格的容錯處理

3.不支持加密壓縮和解壓

上述就是小編為大家分享的如何用Python寫一個帶圖形界面的文件壓縮軟件了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯-成都網站建設公司行業資訊頻道。

文章名稱:如何用Python寫一個帶圖形界面的文件壓縮軟件-創新互聯
標題路徑:http://vcdvsql.cn/article10/ppjgo.html

成都網站建設公司_創新互聯,為您提供定制網站ChatGPT靜態網站標簽優化虛擬主機網站導航

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設