成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何用Python寫一個帶圖形界面的文件壓縮軟件,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、四川網(wǎng)站維護(hù)、網(wǎng)站推廣。

文件壓縮和解壓我們在日常工作學(xué)習(xí)中會經(jīng)常用到,比如winrar、快壓、好壓等壓縮軟件

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

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

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

壓縮完成后是這個樣子:

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

解壓完成后是這個樣子:

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

Python壓縮軟件程序?qū)崿F(xiàn)和分析過程

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

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

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

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

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

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

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

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

但是Qt的QFileDialog不支持這樣的實現(xiàn),提供的控件要么只能選文件,要么只能選文件夾,對此花了好幾個小時去研究和查閱資料,得出的結(jié)論是要繼承QFileDialog類,然后重寫這個類的部分方法來,實現(xiàn)既能選文件又能選文件夾的功能,于是趟坑去實現(xiàn)了一把,對Qt本身的機(jī)制也是一知半解,所以調(diào)試了很久。

重新實現(xiàn)的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壓縮程序卡殼的地方是:

我把整個程序都寫完了,測試了幾把沒有問題,自己沾沾自喜這個程序真完美。第二天又想起了,想再完整的測試一下,畢竟要寫在猿人學(xué)公眾號上,被人挑刺心里總是不好受的。結(jié)果發(fā)現(xiàn)壓縮時會把你的整個文件路徑上的文件夾都壓縮進(jìn)去。

舉個栗子:

比如要壓縮的文件路徑是:D:/log/nginx/access.log

壓縮是:D:/log/nginx/access.zip

解壓后,正常情況應(yīng)該是把文件還原為:

D:/log/nginx/access/access.log

但是實際上解壓后變成了:

D:/log/nginx/access/log/nginx/access.log

就是程序在壓縮的時候把文件路徑上的目錄也都壓縮進(jìn)去了。

這也調(diào)試了好一會,開始以為是把文件路徑給傳錯了。

結(jié)果是自己對zipfile的使用沒研究清楚,錯誤示例如下:

z = zipfile.Zipfile('D:/log/nginx/access.zip')
z.write('D:/log/nginx/access.log')
z.close()

這樣就會把文件路徑上的目錄全都壓縮進(jìn)去。正確的用法是:

z = zipfile.Zipfile('D:/log/nginx/access.zip')
z.write('D:/log/nginx/access.log','access.log')
z.close()

為什么頭一天測試沒有發(fā)現(xiàn)這個問題呢?

因為我之前測試要壓縮的文件路徑是這樣的:D:/access.log

文件在根目錄下面,文件路徑上沒有其他目錄了,所以就發(fā)現(xiàn)不了。

這也告訴我們測試一定要多角度,多場景測試啊。

兩個Python源文件,200多行代碼搞定,再一次感嘆用Python就是方便。

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

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

打包命令:

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

Python壓縮程序文件結(jié)構(gòu):

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

程序運行方法:python zip_main.py

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

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

2.沒有嚴(yán)格的容錯處理

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

上述就是小編為大家分享的如何用Python寫一個帶圖形界面的文件壓縮軟件了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站欄目:如何用Python寫一個帶圖形界面的文件壓縮軟件
文章源于:http://jinyejixie.com/article44/pgejhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)頁設(shè)計公司、商城網(wǎng)站云服務(wù)器、搜索引擎優(yōu)化定制網(wǎng)站

廣告

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

網(wǎng)站優(yōu)化排名
晋江市| 留坝县| 钦州市| 上蔡县| 营口市| 咸宁市| 漠河县| 芜湖县| 甘德县| 香河县| 娱乐| 河北区| 景宁| 万盛区| 枣庄市| 抚顺县| 乳源| 黄陵县| 大英县| 武宣县| 金寨县| 阿克苏市| 扶余县| 防城港市| 舟山市| 汉阴县| 扎兰屯市| 黄龙县| 房产| 山阴县| 鸡西市| 自贡市| 斗六市| 留坝县| 沙湾县| 贡觉县| 建水县| 信宜市| 东源县| 阿巴嘎旗| 和龙市|