一、zip函數簡介
zip函數是Python中常用的函數之一,用於將多個序列並排組合成一個新的元組序列。其中最常用的形式是如下所示:
zip(iter1, iter2, ...)
其中iter1、iter2等參數可以是任意類型的序列,包括list、tuple、set等。
Python中的zip函數將多個序列中相同位置的元素按照位置打包成為一個元組,然後將這些元組放在一個列表中返回。如果各個序列長度不一致,則返回列表長度與最短的序列相同,不足部分被忽略。
下面是一個簡單的例子:
list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] zipped = zip(list1, list2) print(list(zipped))
輸出如下結果:
[(1, 'a'), (2, 'b'), (3, 'c')]
關於zip函數的更多用法,請參考Python官方文檔。
二、zip函數的高效壓縮和解壓縮
在文件操作中,我們經常需要對多個文件進行壓縮和解壓縮操作。Python中的zip函數正好可以利用其打包元組的特性進行高效的壓縮操作。
1. 壓縮文件
下面是一個將多個文件壓縮為一個zip文件的例子:
import zipfile import os def zip_files(files, zip_name): with zipfile.ZipFile(zip_name, 'w', compression=zipfile.ZIP_DEFLATED) as zip_file: for file in files: zip_file.write(file) if __name__ == '__main__': files = ['file1.txt', 'file2.txt', 'file3.txt'] zip_name = 'files.zip' zip_files(files, zip_name)
上面的代碼中,我們通過zipfile模塊中的ZipFile類創建了一個zip文件對象,並指定其寫入方式為’w’,同時指定了壓縮方式為DEFLATED。
接著,我們通過for循環依次將每個文件寫入到zip文件中。注意,這裡我們使用了write方法,而不是writestr方法,這是因為write方法可以將文件內容直接寫入zip文件,而writestr方法則必須將文件內容轉換為字元串後再寫入。
最後,我們通過with語句自動關閉zip文件對象。
2. 解壓文件
下面是一個將zip文件解壓縮的例子:
import zipfile import os def unzip_file(zip_file, dst_path): with zipfile.ZipFile(zip_file, 'r') as zip_file: zip_file.extractall(dst_path) if __name__ == '__main__': zip_file = 'files.zip' dst_path = './unzip_files' unzip_file(zip_file, dst_path)
上面的代碼中,我們同樣使用了zipfile模塊中的ZipFile類,並指定其打開方式為’r’,表示讀取zip文件。接著,我們通過extractall方法將zip文件中的所有文件解壓縮到指定路徑中。
三、總結
通過以上的介紹,我們可以看到Python中的zip函數不僅可以用於常規的序列打包操作,還可以利用其打包元組的特性進行高效的文件壓縮和解壓縮操作。這為我們的文件操作帶來了更加方便和高效的選擇。
原創文章,作者:ZAQE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/147950.html