標籤:包名 size 寫法 解壓 中文亂碼 dash 添加 store pfile
#python壓縮解壓模組: zipfile tarfile
#--zipfile模組
‘‘‘
尾碼為zip
‘‘‘
zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
*ZipFile(路徑包名,模式,壓縮or打包,可選allowZip64)
功能:建立一個ZipFile對象,表示一個zip檔案.
參數:
-參數file表示檔案的路徑或類檔案對象(file-like object)
-參數mode指示開啟zip檔案的模式,預設值為r
r 表示讀取已經存在的zip檔案
w 表示建立一個zip文檔或覆蓋一個已經存在的zip文檔
a 表示將資料追加到一個現存的zip文檔中。
-參數compression表示在寫zip文檔時使用的壓縮方法
zipfile.ZIP_STORED 只是儲存模式,不會對檔案進行壓縮,這個是預設值
zipfile.ZIP_DEFLATED 對檔案進行壓縮
-如果要操作的zip檔案大小超過2G,應該將allowZip64設定為True。
#壓縮檔
#1.ZipFile() 寫入模式w開啟或者建立壓縮檔
#2.write(路徑,別名) 向壓縮檔中添加檔案內容
#3.close() 關閉壓縮檔
#解壓檔案
#1.ZipFile() 讀模式r開啟壓縮檔
#2.extractall(路徑) 解壓所有檔案到某個路徑下
# extract(檔案,路徑) 解壓指定的某個檔案到某個路徑下
#3.close() 關閉壓縮檔
#追加檔案(支援with寫法)
ZipFile() 追加模式a開啟壓縮檔
#查看壓縮包中的內容
namelist()
"""
#處理zip中文亂碼
#方法一
zip_file = zip_file.encode(‘cp437‘).decode(‘gbk‘)
#方法二
zip_file = zip_file.encode(‘utf-8‘).decode(‘utf-8‘)
"""
#--tarfile模組
"""
尾碼類型: .tar | .tar.gz | .tar.bz2
模式有tar|gz|bz2 (bz2模式的壓縮檔較小 gz相對bz2大)
例:
w 單純的套一個尾碼 打包
w:bz2 採用bz2演算法 壓縮
"""
#壓縮檔
#1.open(‘路徑包名‘,‘模式‘,‘字元編碼‘)建立或者開啟檔案
#2.add(路徑檔案,arcname="別名")向壓縮檔中添加檔案
#3,close()關閉檔案
#解壓檔案
#1.open(‘路徑包名‘,‘模式‘,‘字元編碼‘)讀模式開啟檔案
#2.extractall(路徑) 解壓所有檔案到某個路徑下
# extract(檔案,路徑) 解壓指定的某個檔案到某個路徑下
#3.close() 關閉壓縮檔
#追加檔案
open() 追加模式a:開啟壓縮檔 正常添加即可
#查看壓縮包中的內容
getnames()
# zipfile模組
# 尾碼是zip
# 壓縮檔是zipfile
zp = zipfile.ZipFile("/mnt/hgfs/vm_gongxiang/star/a001.zip","w",zipfile.ZIP_DEFLATED)
zp.write("/bin/dash","dash")
zp.write("/bin/date","date")
zp.write("/bin/dd","dd")
zp.write("/bin/df","df")
zp.close()
# 壓縮檔
with zipfile.ZipFile("/mnt/hgfs/vm_gongxiang/star/a001.zip","r") as zp:
zp.extractall("/mnt/hgfs/vm_gongxiang/star/a001")
# zp.extract("/mnt/hgfs/vm_gongxiang/star/a001")
# 追加檔案
with zipfile.ZipFile("/mnt/hgfs/vm_gongxiang/star/a001.zip","a",zipfile.ZIP_DEFLATED) as zp:
zp.write("/bin/dmesg","/dmesg")
# 查看壓縮包中的內容
with zipfile.ZipFile("/mnt/hgfs/vm_gongxiang/star/a001.zip","r") as zp:
res = zp.namelist()
print(res)
===
# tarfile模組
"""
尾碼類型: .tar| .tar.gz | .tat.bz2
模式有tar|gz|bz2(bz2模式的壓縮檔較小 gz相對bz2大)
例:
w 單純的套個尾碼 打包
w:gz 採用bz2演算法 壓縮
w:bz2 採用gz演算法 壓縮
"""
import tarfile
# tarfile 壓縮檔
with tarfile.open("/mnt/hgfs/mv_gongxiang/star/a001.tar.bz","w:bz",encoding="gbk") as tf:
tf.add("/bin/dash",arcname="dash")
tf.add("/bin/date",arcname="date")
tf.add("/bin/dd",arcname="dd")
tf.add("/bin/df",arcname="df")
tf.add("/mnt/hgfs/mv_gongxiang/你好.txt",arcname="你好")
# tarfile 解壓檔案
with tarfile.open("/mnt/hgfs/mv_gongxiang/star/a001.tar.bz","r") as tf:
tf.extractall("/mnt/hgfs/mv_gongxiang/star/a001")
# tf.extract("/mnt/hgfs/mv_gongxiang/star/a001")
# tarfile 追加檔案
with tarfil.open("/mnt/hgfs/mv_gongxiang/star/a001.tar.bz","a:") as tf:
tf.add("/bin/echo",arcname="echo")
# 查看壓縮包中內容
with tarfile.open("/mnt/hgfs/mv_gongxiang/star/a001.tar.bz","r",encoding="gbk") as tf:
res = tf.getname()
print(res)
Python_物件導向_zipfile和tarfile