Python自動化文件處理之如何批量壓縮和解壓文件
1.準(zhǔn)備工作
在開始之前得先裝個"zipfile"模塊,不過這玩意是Python內(nèi)置的,不用額外安裝。它就是咱們今天的主角,負(fù)責(zé)文件壓縮解壓的全部操作。
import zipfile import os from pathlib import Path
2.批量壓縮文件
壓縮文件說復(fù)雜也不復(fù)雜,說簡單也不簡單。咱們寫個函數(shù),把指定文件夾里的文件都打包成zip:
def batch\_zip\_files(folder\_path, zip\_name):
# 創(chuàng)建一個zip文件
with zipfile.ZipFile(zip\_name, 'w') as zip\_file:
# 遍歷文件夾
for root, dirs, files in os.walk(folder\_path):
for file in files:file\_path = os.path.join(root, file)
# 把文件添加到zip中
zip\_file.write(file\_path, os.path.relpath(file\_path, folder\_path))
\# 使用方法
batch\_zip\_files('要壓縮的文件夾', '壓縮包名稱.zip')
溫馨提示:壓縮前最好檢查下磁盤空間夠不夠
3.批量解壓文件
解壓比壓縮還簡單,寫個函數(shù)輕松搞定一堆zip文件:
def batch\_unzip\_files(zip\_folder, extract\_folder):
# 獲取所有zip文件
zip\_files = Path(zip\_folder).glob('\*.zip')
for zip\_path in zip\_files:
with zipfile.ZipFile(zip\_path, 'r') as zip\_file:
# 解壓到指定目錄
zip\_file.extractall(path=os.path.join(extract\_folder, zip\_path.stem))
\# 使用方法
batch\_unzip\_files('存放zip的文件夾', '解壓目標(biāo)文件夾')
4.加點高級功能
咱們還能給壓縮文件加個密碼,防止文件被隨便看到:
def secure\_zip\_files(folder\_path, zip\_name, password):
with zipfile.ZipFile(zip\_name, 'w', zipfile.ZIP\_DEFLATED) as zip\_file:
for root, dirs, files in os.walk(folder\_path):
for file in files:
file\_path = os.path.join(root, file)
zip\_file.write(file\_path,os.path.relpath(file\_path, folder\_path),pwd=password.encode())
\# 使用方法
secure\_zip\_files('要壓縮的文件夾', '加密壓縮包.zip', '你的密碼')
解壓帶密碼的zip文件也很容易:
def extract\_secure\_zip(zip\_path, extract\_folder, password):
with zipfile.ZipFile(zip\_path, 'r') as zip\_file:
zip\_file.extractall(
path=extract\_folder,
pwd=password.encode())
\# 使用方法
extract\_secure\_zip('加密壓縮包.zip', '解壓目標(biāo)文件夾', '你的密碼')
5.實用小貼士
寫代碼的時候記得加上錯誤處理,要不遇到問題程序就崩潰了:
def safe\_zip\_files(folder\_path, zip\_name):
try:with zipfile.ZipFile(zip\_name, 'w') as zip\_file:
for root, dirs, files in os.walk(folder\_path):
for file in files:
try:file\_path = os.path.join(root, file)zip\_file.write(file\_path)except Exception as e:
print(f'壓縮{file}失敗:{str(e)}')except Exception as e:
print(f'創(chuàng)建zip文件失?。簕str(e)}')
完整代碼示例:
import zipfile
import os
from pathlib import Path
def batch\_zip\_files(folder\_path, zip\_name):
with zipfile.ZipFile(zip\_name, 'w') as zip\_file:
for root, dirs, files in os.walk(folder\_path):
for file in files:file\_path = os.path.join(root, file)
zip\_file.write(file\_path, os.path.relpath(file\_path, folder\_path))
def batch\_unzip\_files(zip\_folder, extract\_folder):
zip\_files = Path(zip\_folder).glob('\*.zip')
for zip\_path in zip\_files:
with zipfile.ZipFile(zip\_path, 'r') as zip\_file:
zip\_file.extractall(path=os.path.join(extract\_folder, zip\_path.stem))
def secure\_zip\_files(folder\_path, zip\_name, password):
with zipfile.ZipFile(zip\_name, 'w', zipfile.ZIP\_DEFLATED) as zip\_file:
for root, dirs, files in os.walk(folder\_path):
for file in files:file\_path = os.path.join(root, file)
zip\_file.write(file\_path,os.path.relpath(file\_path, folder\_path),pwd=password.encode())
def extract\_secure\_zip(zip\_path, extract\_folder, password):
with zipfile.ZipFile(zip\_path, 'r') as zip\_file:
zip\_file.extractall(
path=extract\_folder,
pwd=password.encode())
\# 測試代碼
folder\_to\_zip = '要壓縮的文件夾'
zip\_file\_name = '壓縮包.zip'
extract\_folder = '解壓目標(biāo)文件夾'
password = '你的密碼'
batch\_zip\_files(folder\_to\_zip, zip\_file\_name)
batch\_unzip\_files(os.path.dirname(zip\_file\_name), extract\_folder)
secure\_zip\_files(folder\_to\_zip, 'secure\_' + zip\_file\_name, password)
extract\_secure\_zip('secure\_' + zip\_file\_name, extract\_folder, password)
把這段代碼復(fù)制到你的編輯器里,改下文件路徑就能用啦!記得創(chuàng)建好相關(guān)文件夾,不然代碼會報錯。
到此這篇關(guān)于Python自動化文件處理之如何批量壓縮和解壓文件的文章就介紹到這了,更多相關(guān)Python壓縮和解壓文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
手把手帶你了解Python數(shù)據(jù)分析--matplotlib
這篇文章主要介紹了Python實現(xiàn)matplotlib顯示中文的方法,結(jié)合實例形式詳細(xì)總結(jié)分析了Python使用matplotlib庫繪圖時顯示中文的相關(guān)操作技巧與注意事項,需要的朋友可以參考下2021-08-08
純用NumPy實現(xiàn)神經(jīng)網(wǎng)絡(luò)的示例代碼
這篇文章主要介紹了純用NumPy實現(xiàn)神經(jīng)網(wǎng)絡(luò)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10

