檔案壓縮和解壓縮是日常工作中常見的任務。Python提供了zipfile模組,這使得檔案壓縮和解壓縮變得簡單而直觀。
壓縮檔案
首先,我們將看一下如何使用Python壓縮檔案。我們將使用zipfile模組的ZipFile類來執行此操作。
import zipfile
def compress_files(file_paths, output_path):
with zipfile.ZipFile(output_path, 'w') as zipf:
for file_path in file_paths:
zipf.write(file_path)
上述程式碼中,compress_files函式接收兩個參數:file_paths是一個檔案路徑列表,表示要壓縮的檔案;output_path是指定壓縮檔案的輸出路徑。
在函式內部,我們使用with語句來建立一個ZipFile物件。這將確保在程式碼塊執行完畢後,檔案會被正確地關閉。
然後,我們使用迴圈遍歷file_paths列表,將每個檔案逐一加入到壓縮檔案中,使用write方法。
現在,您可以使用以下程式碼示例來壓縮檔案:
files_to_compress = ['file1.txt', 'file2.txt', 'file3.txt']
compress_files(files_to_compress, 'compressed.zip')
在上述示例中,我們將file1.txt、file2.txt和file3.txt這三個檔案壓縮到名為compressed.zip的壓縮檔案中。
解壓縮檔案
接下來,我們將看一下如何使用Python解壓縮檔案。同樣,我們將使用zipfile模組的ZipFile類來執行此操作。
import zipfile
def extract_files(zip_path, output_dir):
with zipfile.ZipFile(zip_path, 'r') as zipf:
zipf.extractall(output_dir)
上述程式碼中,extract_files函式接收兩個參數:zip_path是要解壓縮的ZIP檔案的路徑;output_dir是指定解壓縮檔案的輸出目錄。
在函式內部,我們使用with語句來建立一個ZipFile物件。同樣,這將確保在程式碼塊執行完畢後,檔案會被正確地關閉。
然後,我們使用extractall方法將ZIP檔案中的所有內容提取到指定的output_dir目錄中。
現在,您可以使用以下程式碼示例來解壓縮檔案:
extract_files('compressed.zip', 'extracted_files')
在上述示例中,我們將名為compressed.zip的壓縮檔案解壓縮到extracted_files目錄中。
進一步的擴展
上面的示例只是使用zipfile模組進行檔案壓縮和解壓縮的基本操作。但該模組還提供了其他許多功能。以下是一些你可以進一步探索的例子:
- 壓縮時的選項:ZipFile類的建構函式接受一些額外的參數,如compression(指定壓縮方法)、allowZip64(允許ZIP64格式)、compresslevel(壓縮級別)等。你可以使用這些選項來自定義壓縮行為。
- 解壓縮單個檔案:ZipFile類還提供了extract方法,你可以使用它來解壓縮單個檔案而不是全部提取。
- 檔案加密:ZipFile類支援對檔案進行加密,可以使用setpassword方法設置密碼。
- 檔案註釋:你可以使用ZipInfo類的comment屬性來添加和讀取檔案的註釋。