當前位置:首頁 » 文件管理 » python壓縮和解壓

python壓縮和解壓

發布時間: 2024-09-13 13:40:14

python怎樣壓縮解壓縮ZIP文件

1、說明

python使用zipfile模塊來壓縮和解壓zip文件

2、代碼

importos,os.path
importzipfile

defzip_dir(dirname,zipfilename):
filelist=[]
ifos.path.isfile(dirname):
filelist.append(dirname)
else:
forroot,dirs,filesinos.walk(dirname):
fornameinfiles:
filelist.append(os.path.join(root,name))

zf=zipfile.ZipFile(zipfilename,"w",zipfile.zlib.DEFLATED)
fortarinfilelist:
arcname=tar[len(dirname):]
#printarcname
zf.write(tar,arcname)
zf.close()


defunzip_file(zipfilename,unziptodir):
ifnotos.path.exists(unziptodir):os.mkdir(unziptodir)
zfobj=zipfile.ZipFile(zipfilename)
fornameinzfobj.namelist():
name=name.replace('\','/')

ifname.endswith('/'):
os.mkdir(os.path.join(unziptodir,name))
else:
ext_filename=os.path.join(unziptodir,name)
ext_dir=os.path.dirname(ext_filename)
ifnotos.path.exists(ext_dir):os.mkdir(ext_dir)
outfile=open(ext_filename,'wb')
outfile.write(zfobj.read(name))
outfile.close()

if__name__=='__main__':
zip_dir(r'd:/python/test',r'd:/python/test.zip')
unzip_file(r'd:/python/test.zip',r'd:/python/test2')

執行結果

順利生成相應文件

3、備注

zip文件格式是通用的文檔壓縮標准,在zipfile模塊中,使用ZipFile類來操作zip文件,下面具體介紹一下:
class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])

創建一個ZipFile對象,表示一個zip文件。參數file表示文件的路徑或類文件對象(file-like object);參數mode指示打開zip文件的模式,默認值為'r',表示讀已經存在的zip文件,也可以為'w'或'a','w'表示新建一個zip文檔或覆蓋一個已經存在的zip文檔,'a'表示將數據附加到一個現存的zip文檔中。參數compression表示在寫zip文檔時使用的壓縮方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。如果要操作的zip文件大小超過2G,應該將allowZip64設置為True。

ZipFile還提供了如下常用的方法和屬性:
ZipFile.getinfo(name):

獲取zip文檔內指定文件的信息。返回一個zipfile.ZipInfo對象,它包括文件的詳細信息。將在下面 具體介紹該對象。
ZipFile.infolist()

獲取zip文檔內所有文件的信息,返回一個zipfile.ZipInfo的列表。
ZipFile.namelist()

獲取zip文檔內所有文件的名稱列表。
ZipFile.extract(member[, path[, pwd]])

㈡ Python內置解壓縮庫:解析與實踐

Python內置的解壓縮庫為處理常見壓縮文件提供了方便快捷的方法。本文詳細探討了這些庫的使用,包括基礎用法、處理不同壓縮格式、實際應用案例、性能優化策略和高級功能。
首先,通過zipfile、gzip和tarfile庫,可以輕松實現對ZIP、GZIP和TAR文件的解壓縮與壓縮。基礎用法示例清晰展示了文件的解壓、壓縮以及內容遍歷。
Python支持多種壓縮格式,每種格式有其特點和使用場景。ZIP文件常用於打包多個文件,GZIP用於單個文件壓縮,TAR文件則用於多個文件的打包與壓縮。掌握這些格式的處理方法,有助於根據需求選擇合適的解壓縮方式。
在實際應用中,Python內置庫在項目中發揮重要作用。解析日誌文件、處理數據集壓縮文件等場景,展示了庫在處理復雜文件結構和執行特定操作時的優勢。
性能優化考慮在處理大型文件時尤為重要。通過合理使用緩沖區、選擇高效解壓縮方式和並行處理策略,可以顯著提高性能。討論的性能優化策略有助於在實際項目中實現高效解壓縮。
深入探討Python解壓縮庫的高級功能,如自定義解壓路徑、處理密碼保護文件等,提供了更多定製化選擇,使庫適應不同需求。
實際應用案例展示了庫的廣泛使用,包括處理包含多個目錄的壓縮文件以及在解壓縮過程中執行特定操作。這些案例展示了庫在復雜文件結構處理和執行特定操作方面的優勢。
在使用過程中,應關注異常處理和文件路徑注意事項,確保代碼魯棒性。這在處理各種來源和質量的壓縮文件時尤為重要。
總結而言,Python內置解壓縮庫是強大而靈活的工具,適用於日常開發、數據科學和項目管理等多個場景。掌握庫的基礎用法、高級功能和性能優化策略,可顯著提高文件處理效率,為項目提供有力支持。同時,庫的注意事項與錯誤處理機制確保了代碼的魯棒性,使其成為值得深入學習和掌握的工具之一。

㈢ 下載python然後有一堆文件要解壓

python一堆文件解壓方法如下。

壓縮包解壓要用的是zipfile這個包。

zip_file = zipfile.ZipFile(r'D:數據源XX_%s.zip'%yday)

zip_list = zip_file.namelist() # 壓縮文件清單,可以直接看到壓縮包內的各個文件的明細

for f in zip_list: # 遍歷這些文件,逐個解壓出來,

zip_file.extract(f,r'D:數據源')

zip_file.close() # 不能少!

print('昨日日誌解壓完成,請在文件夾中驗收!') # 當然我是不需要查收的(*/ω\*)

這里的解壓操作實際就相當於滑鼠右鍵「解壓到當前文件夾」的效果。

完成解壓後運行.close()是個比較好的習慣,否則可能會導致包括但不限於:

文件會一直被佔用著,可能無法重新打開;

在進程結束之前文件都刪不掉;

文件內容不能即時 flush 到磁碟直到進程結束;

到此,整個流程在無需打開瀏覽器和文件夾的情況下便自動完成了。

為了方便日常運行代碼,這里把上面的兩個流程包裝成一個函數,下載解壓

#下載昨日日誌

def download_XXlog():

yday = (date.today()+timedelta(days=-1)).strftime('%Y%m%d') # 獲取昨日日期

r = requests.get('http://XXXXXXXX/XX_%s.zip'%yday) # 獲取以日期命名的壓縮包信息

with open(r'D:數據源XX_%s.zip'%yday,'wb') as code: # 將壓縮包內容寫入到 "D:數據源" 下,並按日期命名

code.write(r.content)

print('昨日XX日誌下載完成。')

zip_file = zipfile.ZipFile(r'D:數據源XX_%s.zip'%yday)

zip_list = zip_file.namelist() # 壓縮文件清單,可以直接看到壓縮包內的各個文件的明細

for f in zip_list: # 遍歷這些文件,逐個解壓出來,

 zip_file.extract(f,r'D:數據源')

zip_file.close() # 不能少!

print('昨日日誌解壓完成,請在文件夾中驗收!')

download_XXlog()

拓展

作為拓展,這里再加一個可以根據實際情況輸入(input)起始和終止日期,來下載一個特定時間段日誌的函數,這里就涉及了datetime和time這兩個工具包了。

熱點內容
什麼是伺服器機箱批發 發布:2024-09-18 10:26:10 瀏覽:195
sqlserver查看錶結構 發布:2024-09-18 09:56:18 瀏覽:37
伺服器生成錯誤是什麼意思 發布:2024-09-18 09:55:37 瀏覽:772
萬能鑰匙怎麼解密碼 發布:2024-09-18 09:17:12 瀏覽:382
麥塊和快吧電腦版里伺服器一樣嗎 發布:2024-09-18 09:14:05 瀏覽:201
phpmysql報錯 發布:2024-09-18 09:13:43 瀏覽:914
python數據保存 發布:2024-09-18 08:52:35 瀏覽:911
海康網路視頻伺服器原始ip 發布:2024-09-18 08:19:01 瀏覽:488
java教程視頻馬士兵 發布:2024-09-18 08:05:31 瀏覽:212
安卓耳機入耳安卓怎麼關閉 發布:2024-09-18 07:25:45 瀏覽:952