在Python中,常用的數(shù)據(jù)壓縮和解壓縮方法有以下幾種:
1. gzip模塊:用于文件的壓縮和解壓縮。
2. bz2模塊:用于文件的壓縮和解壓縮,通常比gzip更高效。
3. lzma模塊:用于文件的壓縮和解壓縮,支持多種壓縮級別和算法。
4. zipfile模塊:用于創(chuàng)建、讀取、寫入、追加、解壓ZIP文件。
5. tarfile模塊:用于創(chuàng)建、讀取、寫入、追加tar歸檔文件。
以下是使用這些模塊進(jìn)行數(shù)據(jù)壓縮和解壓縮的示例代碼片段:
import gzip
import bz2
import lzma
import zipfile
import tarfile
# gzip壓縮和解壓縮
with open('example.txt', 'rb') as f_in, gzip.open('example.txt.gz', 'wb') as f_out:
f_out.writelines(f_in)
with gzip.open('example.txt.gz', 'rb') as f_in, open('example_uncompressed.txt', 'wb') as f_out:
f_out.writelines(f_in)
# bz2壓縮和解壓縮
with open('example.txt', 'rb') as f_in, bz2.open('example.txt.bz2', 'wb') as f_out:
f_out.writelines(f_in)
with bz2.open('example.txt.bz2', 'rb') as f_in, open('example_uncompressed.txt', 'wb') as f_out:
f_out.writelines(f_in)
# lzma壓縮和解壓縮
with open('example.txt', 'rb') as f_in, lzma.open('example.txt.xz', 'wb') as f_out:
f_out.writelines(f_in)
with lzma.open('example.txt.xz', 'rb') as f_in, open('example_uncompressed.txt', 'wb') as f_out:
f_out.writelines(f_in)
# zipfile壓縮和解壓縮
with zipfile.ZipFile('example.zip', 'w') as zf:
zf.write('example.txt')
with zipfile.ZipFile('example.zip', 'r') as zf:
zf.extractall()
# tarfile壓縮和解壓縮
with tarfile.open('example.tar', 'w') as tf:
tf.add('example.txt')
with tarfile.open('example.tar', 'r') as tf:
tf.extractall()