Python_物件導向_zipfile和tarfile

來源:互聯網
上載者:User

標籤:包名   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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.