python中的zip模塊

zip壓縮


引入模塊:

import zipfile

zip文件格式是通用的文檔壓縮標準,在ziplib模塊中,使用ZipFile類來操作zip文件,下面具體介紹一下:

zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
功能:創建一個ZipFile對象,表示一個zip文件。
參數:-參數file表示文件的路徑或類文件對象(file-like object)-參數mode指示打開zip文件的模式,默認值為rr    表示讀已經存在的zip文件w    表示新建一個zip文檔或覆蓋一個已經存在的zip文檔a    表示將數據附加到一個現存的zip文檔中。-參數compression表示在寫zip文檔時使用的壓縮方法zipfile.ZIP_STORED      只是存儲模式,不會對文件進行壓縮,這個是默認值zipfile.ZIP_DEFLATED    對文件進行壓縮-如果要操作的zip文件大小超過2G,應該將allowZip64設置為True。

ZipFile還提供了如下常用的方法和屬性:


ZipFile.getinfo(name)

功能:獲取zip文檔內指定文件的信息。返回一個zipfile.ZipInfo對象,它包括文件的詳細信息。將在下面 具體介紹該對象。

ZipFile.infolist()

功能:獲取zip文檔內所有文件的信息,返回一個zipfile.ZipInfo的列表。

ZipFile.namelist()

功能:獲取zip文檔內所有文件的名稱列表。

ZipFile.extract(member[, path[, pwd]])

功能:將zip文檔內的指定文件解壓到當前目錄。
參數:member      指定要解壓的文件名稱或對應的ZipInfo對象path        指定解析文件保存的文件夾pwd         解壓密碼

下面一個例子將保存在程序根目錄下的txt.zip內的所有文件解壓到D:/Work目錄:

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'txt.zip'))
for file in zipFile.namelist():zipFile.extract(file, r'd:/Work')
zipFile.close()

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), ‘txt.zip’))
for file in zipFile.namelist():
zipFile.extract(file, r’d:/Work’)
zipFile.close()

ZipFile.extractall([path[, members[, pwd]]])

功能:解壓zip文檔中的所有文件到當前目錄。
參數:members      默認值為zip文檔內的所有文件名稱列表,也可以自己設置,選擇要解壓的文件名稱。

ZipFile.printdir()

功能:將zip文檔內的信息打印到控制臺上。

ZipFile.setpassword(pwd)

功能:設置zip文檔的密碼。

ZipFile.read(name[, pwd])

功能:獲取zip文檔內指定文件的二進制數據。

下面的例子演示了read()的使用,zip文檔內包括一個txt.txt的文本文件,使用read()方法讀取其二進制數據,然后保存到D:/txt.txt。

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'txt.zip'))
data = zipFile.read('txt.txt')
#一行語句就完成了寫文件操作。仔細琢磨哦~_~
(lambda f, d: (f.write(d), f.close()))(open(r'd:/txt.txt', 'wb'), data)
zipFile.close()

ZipFile.write(filename[, arcname[, compress_type]])

功能:將指定文件添加到zip文檔中。
參數:filename      文件路徑arcname       添加到zip文檔之后保存的名稱compress_type 壓縮方法,它的值可以是zipfile.ZIP_STORED 或zipfile.ZIP_DEFLATED

ZipFile.writestr(zinfo_or_arcname, bytes)

功能:writestr()支持將二進制數據直接寫入到壓縮文檔。

ZipFile.getinfo(name)

功能:返回一個ZipInfo對象,表示zip文檔中相應文件的信息。
它支持如下屬性:ZipInfo.filename        獲取文件名稱。ZipInfo.date_time       獲取文件最后修改時間。返回一個包含6個元素的元組:(年, 月, 日, 時, 分, 秒)ZipInfo.compress_type   壓縮類型。ZipInfo.comment         文檔說明。ZipInfo.extr            擴展項數據。ZipInfo.create_system   獲取創建該zip文檔的系統。ZipInfo.create_version  獲取、創建zip文檔的PKZIP版本。ZipInfo.extract_versio  獲取、解壓zip文檔所需的PKZIP版本。ZipInfo.reserved        預留字段,當前實現總是返回0。ZipInfo.flag_bits       zip標志位。ZipInfo.volume          文件頭的卷標。ZipInfo.internal_attr   內部屬性。ZipInfo.external_attr   外部屬性。ZipInfo.header_offset   文件頭偏移位。ZipInfo.CRC             未壓縮文件的CRC-32。ZipInfo.compress_size   獲取壓縮后的大小。ZipInfo.file_size       獲取未壓縮的文件大小。

下面一個簡單的例子說明這些屬性的意思:

import zipfile, os
zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'txt.zip'))
zipInfo = zipFile.getinfo('doc.doc')
print 'filename:', zipInfo.filename
print 'date_time:', zipInfo.date_time
print 'compress_type:', zipInfo.compress_type
print 'comment:', zipInfo.comment
print 'extra:', zipInfo.extra
print 'create_system:', zipInfo.create_system
print 'create_version:', zipInfo.create_version
print 'extract_version:', zipInfo.extract_version
print 'extract_version:', zipInfo.reserved
print 'flag_bits:', zipInfo.flag_bits
print 'volume:', zipInfo.volume
print 'internal_attr:', zipInfo.internal_attr
print 'external_attr:', zipInfo.external_attr
print 'header_offset:', zipInfo.header_offset
print 'CRC:', zipInfo.CRC
print 'compress_size:', zipInfo.compress_size
print 'file_size:', zipInfo.file_size
zipFile.close()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456015.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[LeetCode] 35. Search Insert Position

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You may assume no duplicates in the array. Here are few examples.[1,3,5,6], 5 → 2[1,3,5,6], 2 → 1[1…

golang 的交叉編譯

為什么80%的碼農都做不了架構師?>>> Go是一門編譯型語言,所以在不同平臺上,需要編譯生成不同格式的二進制包。 由于Go 1.5對跨平臺編譯有了一些改進,包括統一了編譯器、鏈接器等。 編譯時候只需要指定兩個參數&#x…

【深度學習】Cifar-10-探究不同的改進策略對分類準確率提高

cifar10數據集上進行圖片分類,基于tensorflow框架, 旨在探究不同的改進策略對分類準確率的影響,如何一步步得提高準確率 一、問題描述 當我們在處理圖像識別或者圖像分類或者其他機器學習任務的時候,我們總是迷茫于做出哪些改進…

Acer 4750 安裝黑蘋果_黑蘋果 MacOS 10.15 Catalina安裝教程

一、準備工作一個8G以上的U盤(安裝 10.15 Catalina 必須要16G及以上的U盤 );Mac OS鏡像、TransMac(刻錄工具)、DiskGenius(分區工具)、EasyUEFI(引導工區)、EFI驅動文件。安裝工具獲取方式:關注公眾號【遠景論壇】,回復:黑蘋果二、…

幀內16*16模式的宏塊數據傳輸順序

如果宏塊以16*16幀內模式編碼,那么塊-1首先被傳輸,攜帶的信息是每個4*4亮度塊的DC系數。然后,亮度殘差塊0-15被傳輸(此時,16*16幀內宏塊的DC系數為零)。對于亮度分量Cb和Cr,16和17塊攜帶DC系數的…

ceph中查看一個rbd的image的真實存儲位置

1、新建一個image存儲 rbd create hzb-mysql --size 2048 2、查看hzb-mysql的所有對象 一個rbd image實際上包含了多個對象(默認情況下是image_size/4M) [rootcc ~]# rbd info hzb-mysql rbd image hzb-mysql:size 2048 MB in 512 objectsorder 22 (4096…

python中的shutil模塊

shutil模塊 引入: import shutil copy() 功能:復制文件 格式:shutil.copy(來源文件,目標地址) 返回值:復制之后的路徑copy2() 功能:復制文件,保留元數據 格式:shutil.copy2(來源文件,目標地址…

亞馬遜低調收購Biba 或下月發布視頻消息服務

北京時間11月24日消息,據外媒報道,收購Twitch和Elemental Technologies似乎只是亞馬遜通過收購深耕視頻服務市場戰略的兩個元素。去年,亞馬遜還低調收購了創業公司Biba Systems,后者開發和運營面向企業用戶的視頻消息應用。消息人…

【tensorflow】static_rnn與dynamic_rnn的區別

static_rnn和dynamic_rnn的區別主要在于實現不同。 static_rnn會把RNN展平,用空間換時間。 gpu會吃不消(個人測試結果) dynamic_rnn則是使用for或者while循環。 調用static_rnn實際上是生成了rnn按時間序列展開之后的圖。打開tensorboard你…

pcie1 4 速度_太陽系行星們誰轉得最快?八大行星自轉速度排行榜,地球排第五...

不知道大家有沒有玩兒過陀螺呢?玩兒陀螺的技術如果很好的話,它可以在地上飛快地旋轉并且能夠旋轉很長的時間。有趣的是,宇宙中的很多星球就像陀螺一樣繞著一個中心軸旋轉著。這就是星球的自轉。在太陽系中有八顆大行星,它們都在自…

python中時間模塊

時間日期相關的模塊 calendar 日歷模塊time   時間模塊datetime 日期時間模塊timeit   時間檢測模塊 日歷模塊 calendar() 功能:獲取指定年份的日歷字符串 格式:calendar.calendar(年份,w2,l1,c6,m3) 返回值&…

硬盤接口詳細解釋

硬盤是電腦主要的存儲媒介之一,由一個或者多個鋁制或者玻璃制的碟片組成。碟片外覆蓋有鐵磁性材料。硬盤有固態硬盤(SSD 盤,新式硬盤)、機械硬盤(HDD 傳統硬盤)、混合硬盤(HHD 一塊基于傳統機械…

【Keras】30 秒上手 Keras+實例對mnist手寫數字進行識別準確率達99%以上

本文我們將學習使用Keras一步一步搭建一個卷積神經網絡。具體來說,我們將使用卷積神經網絡對手寫數字(MNIST數據集)進行識別,并達到99%以上的正確率。 為什么選擇Keras呢? 主要是因為簡單方便。更多細節請看:https://keras.io/ …

分布式資本沈波:未來區塊鏈殺手級應用將出現在“+區塊鏈”

雷鋒網5月22日報道,日前“區塊鏈技術和應用峰會”在杭州國際博覽中心舉行。會上,分布式資本創始管理人沈波作了《區塊鏈的投資現狀與發展趨勢》演講。 沈波表示,由于區塊鏈的共識機制和無法篡改兩大特點,它在各行各業皆有應用潛力…

幀間預測小記

幀間預測后,在比特流中會有相應的信息:殘差信息,運動矢量信息,所選的模式。 宏塊的色度分量分辨率是亮度分辨率的一半(Cr和Cb),水平和垂直均一半。色度塊采用和亮度塊一致的分割模式&#xff0…

ImageJ Nikon_科研論文作圖之ImageJ

各位讀者朋友們又見面了,今天給大家介紹一款圖片處理軟件——ImageJ,這是一款免費的科學圖像分析工具,廣泛應用于生物學研究領域。ImageJ軟件能夠對圖像進行縮放、旋轉、扭曲、模糊等處理,也可計算選定區域內分析對象的一系列幾何…

python中面向對象

面向對象 Object Oriented 面向對象的學習: 面向對象的語法(簡單,記憶就可以搞定)面向對象的思想(稍難,需要一定的理解) 面向過程和面向對象的區別 面向過程開發,以函數作為基本結構…

【urllib】url編碼問題簡述

對url編解碼總結 需要用到urllib庫中的parse模塊 import urllib.parse # Python3 url編碼 print(urllib.parse.quote("天天")) # Python3 url解碼 print(urllib.parse.unquote("%E5%A4%E5%A4%")) urlparse() # urllib.parse.urlparse(urlstring,scheme,…

冷知識 —— 地理

西安1980坐標系: 1978 年 4 月在西安召開全國天文大地網平差會議,確定重新定位,建立我國新的坐標系。為此有了 1980 國家大地坐標系。1980 國家大地坐標系采用地球橢球基本參數為 1975 年國際大地測量與地球物理聯合會第十六屆大會推薦的數據…

獨家| ChinaLedger白碩:區塊鏈中的隱私保護

隱私問題一直是區塊鏈應用落地的障礙問題之一,如何既能滿足監管,又能不侵害數據隱私,是行業都在攻克的問題。那么,到底隱私問題為何難?有什么解決思路,以及實踐創新呢?零知識證明、同態加密等技…