pyzipfile解壓
python一堆文件解壓方法如下。
壓縮包解壓要用的是zipfile這個包。
zip_file = zipfile.ZipFile(r'D:數據源XX_%s.zip'%yday)
zip_list = zip_file.namelist() # 壓縮文件清單,可以直接看到壓縮包內的各個文件的明細
for f in zip_list: # 遍歷這些文件,逐個解壓出來,
zip_file.extract(f,r'D:數據源')
zip_file.close() # 不能少!
print('昨日日誌解壓完成,請在文件夾中驗收!') # 當然我是不需要查收的(*/ω\*)
這里的解壓操作實際就相當於滑鼠右鍵「解壓到當前文件夾」的效果。
完成解壓後運行.close()是個比較好的習慣,否則可能會導致包括但不限於:
文件會一直被佔用著,可能無法重新打開;
在進程結束之前文件都刪不掉;
文件內容不能即時 flush 到磁碟直到進程結束;
到此,整個流程在無需打開瀏覽器和文件夾的情況下便自動完成了。
為了方便日常運行代碼,這里把上面的兩個流程包裝成一個函數,下載解壓
#下載昨日日誌
def download_XXlog():
yday = (date.today()+timedelta(days=-1)).strftime('%Y%m%d') # 獲取昨日日期
r = requests.get('http://XXXXXXXX/XX_%s.zip'%yday) # 獲取以日期命名的壓縮包信息
with open(r'D:數據源XX_%s.zip'%yday,'wb') as code: # 將壓縮包內容寫入到 "D:數據源" 下,並按日期命名
code.write(r.content)
print('昨日XX日誌下載完成。')
zip_file = zipfile.ZipFile(r'D:數據源XX_%s.zip'%yday)
zip_list = zip_file.namelist() # 壓縮文件清單,可以直接看到壓縮包內的各個文件的明細
for f in zip_list: # 遍歷這些文件,逐個解壓出來,
zip_file.extract(f,r'D:數據源')
zip_file.close() # 不能少!
print('昨日日誌解壓完成,請在文件夾中驗收!')
download_XXlog()
拓展
作為拓展,這里再加一個可以根據實際情況輸入(input)起始和終止日期,來下載一個特定時間段日誌的函數,這里就涉及了datetime和time這兩個工具包了。
⑵ python中的zipfile
python中的zipfile模塊是用於解壓/壓縮zip文件的,壓縮a.txt為a.zip,從b.zip解壓出b.txt(假設它們都放在d:\,且b.zip中只有b.txt)示範代碼如下5行:
from os import chdir;
from zipfile import ZipFile;
chdir("d:/");
with Zipfile("d:/b.zip","r") as zipf:zipf.extractall();
with Zipfile("d:/a.zip","w") as zipf:zipf.write("d:/a.txt");
⑶ 如何通過python代碼解壓zip包
defunzip_file(zip_src,dst_dir):
r=zipfile.is_zipfile(zip_src)
ifr:
fz=zipfile.ZipFile(zip_src,'r')
forfileinfz.namelist():
fz.extract(file,dst_dir)
else:
print('Thisisnotzip')
#zip_src:是zip文件的全路徑
#dst_dir:是要解壓到的目的文件夾
以上代碼是Python3中的實現方式,謝謝
⑷ python怎樣壓縮和解壓縮ZIP文件
Python壓縮ZIP文件:
importzipfile
f=zipfile.ZipFile(target,'w',zipfile.ZIP_DEFLATED)
f.write(filename,file_url)
f.close()
其中target:是壓縮後要保存的路徑,可以是: 'C:/temp/'
ZIP_DEFLATED:表示壓縮,還有一個參數:ZIP_STORE:表示只打包,不壓縮。
這個Linux中的gz跟tar格式有點類似.
write方法如果只有一個參數filename的話,表示把你filename所帶的路徑全部壓縮到zip文件中。如果帶兩個參數,表示把filename路徑中的那個file壓縮一下並且存放到file_url中,中間沒有增加任何的文件夾。
如果要壓縮很多的文件,循環的write就ok了, 最後close掉。
Python解壓ZIP文件:
f=zipfile.ZipFile("zipfilePath",'r')
forfileinf.namelist():
f.extract(file,"temp/")
zipfilePath是壓縮文件的路徑
循環訪問該壓縮文件中的文件,並且一個一個file的解壓到對應的"temp"文件夾中
⑸ Python打開zip文件
Zip文件格式是通用的文檔壓縮標准。自1.6版本起,Python中zipfile模塊能夠直接處理zip文件里的數據,例如需要將對應目錄或多個文件打包或壓縮成zip格式,或者需要查看一個zip格式的歸檔文件中部分或者所有文件同時避免講這些文件展開到磁碟上。使用ZipFile類來操作zip文件。
創建一個ZipFile對象,表示一個zip文件。
參數file:文件的路徑或者類似文件對象
參數mode:讀"r",寫入"w",添加"a"
參數compression: ZIP_STORED(無壓縮),ZIP_DEFLATED(壓縮,需要zlib支持)
參數allowZip64:默認情況下報錯,將其設為True,ZipFile將用ZIP64擴展進行創建文件。
下面示例演示了讀取一個zip文檔,將文檔里所有文件解壓到名為"work"的文件里。
import zipfile
if __name__ == "__main__":
zFile = zipfile.ZipFile("F:\\txt.zip","r")
#ZipFile.namelist():獲取ZIP文檔內所有文件的名稱列表
for fileM in zFile.namelist():
zFile.extract(fileM,"F:\\work")
zFile.close()
read(self,name,pwd=None)獲取ZIP文檔內文件的二進制數據
下面例子演示了使用read方法獲取ZIP文檔中mango.txt文件的數據,並寫到.txt文件中
import zipfile
if __name__ == "__main__":
zipFile = zipfile.ZipFile('F:\\test.zip','r')
data = zipFile.read("mango.txt")
(lambda f,d:(f.write(d),f.close()))(open("F:\\.txt,'w"),data)
zipFile.close()
write(self, filename, arcname=None, compress_type=None)將指定文件寫入ZIP文檔中
參數filename:需要寫入文件的路徑
參數arcname:文件寫入ZIP文檔後保存的文件名
參數compress_type:壓縮方法(ZIP_STORED或ZIP_DEFAULED)
下面離子演示了創建一個zip文檔,將test.docx文件寫入壓縮文檔裡面。
import zipfile
if __name__ == "__main__":
zipFile = zipfile.ZipFile("F:\\test.zip","w")
zipFile.write("F:\\test.docx","ok.docx",zipfile.ZIP_DEFLATED)
zipFile.close()
getinfo(name)返回一個ZipInfo類的對象。
import zipfile
if __name__ == "__main__":
zipInfo = zipFile.getinfo(ok.docx)
print("filename:",zipInfo.filename)
print("date_time:",zipInfo.date_time)
常用函數
關閉歸檔文件,你必須在退出程序之前調用close()否則將不會寫入關鍵記錄數據。
返回一個ZipInfo對象,其中包含有關歸檔成員name的信息。針對一個目前並不包含於歸檔中的名稱調用getinfo()將會引發KeyError。
返回一個列表,其中包含每個歸檔成員的ZipInfo對象。如果是打開一個現有歸檔則這些對象的排列順序與他們對於條目在磁碟上的實際ZIP文件中的順序一致。
返回按名稱排列的歸檔成員列表。
以二進制文件類對象的形式訪一個歸檔成員。name可以是歸檔內某個文件的名稱也可以是某個ZipInfo對象。如果包含了mode形參,則它必須為"r"(默認值)或"w"。pwd為用於解密已加密Zip文件的密碼。
open()也是一個上下文 管理器,因此支持with語句:
with ZipFile('spam.zip') as myzip:
with myzip.open('eggs.txt') as myfile:
print(myfile.read())
如果mode為「r」則文件類對象(ZipExtFile)將只讀並且提供下列方法:read(),readline(),readlines(),seek(),tell(),__iter__(),__next__()。這些對象可獨立於ZipFile進行操作。
如果mode='w'則返回一個可寫入的文件句柄,它將支持write()方法。當一個可寫入的文件句柄被打開時,嘗試讀寫ZIP文件中的其他文件將會引發ValueError。
當寫入一個文件時,如果文件大小不能預先確定但是可能超過2GiB,可傳入force_zip64=True以確保標頭格式能夠支持超大文件。如果文件大小可以預先確定,則在構造ZipInfo對象時應設置file_size,並將其作name形參。
從歸檔中提取一個成員放入當前工作目錄;member必須為成員的完整名稱或ZipInfo對象。成員的文件信息會盡可能精確地被提取。path指定一個要提取到的不同目錄。member可以是一個文件名或ZipInfo對象。pwd是用於解密文件的密碼。返回所創建的經正規化的路徑(對應於目錄或新文件)。
從歸檔中提取出所有成員放入當前工作目錄。path指定一個要提取到的不同的目錄。members為可選項且必須為namelist()所返回列表的一個子集。pwd是用於解密文件的密碼。
警告:絕不要未經預先檢驗就從不可靠的源中提取歸檔文件。 這樣有可能在 path 之外創建文件,例如某些成員具有以 "/" 開始的文件名或帶有兩個點號 ".." 的文件名。 此模塊會嘗試防止這種情況。 參見 extract() 的注釋。
將歸檔是目錄表列印到sys.stdout.
設置pwd為用於提取已加密文件的默認密碼。
返回歸檔中文件name的位元組數據。name是歸檔中文件的名稱,或是一個ZipInfo對象。歸檔必須以讀取或追加方式打開。pwd為用於已加密文件的密碼,並且如果指定該參數則它將覆蓋通過setpassword()設置的默認密碼。 on a ZipFile that uses a compression method 在使用 ZIP_STORED , ZIP_DEFLATED , ZIP_BZIP2 或 ZIP_LZMA 以外的壓縮方法的 ZipFile 上調用 read() 將引發 NotImplementedError 。 如果相應的壓縮模塊不可用也會引發錯誤。
讀取歸檔中的所有文件並檢查他們的CRC和文件頭。返回第一個已損壞文件的名稱,在其他情況下則返回None。
將名為filename的文件寫入歸檔,給予的歸檔名為arcname(默認情況下將與filename一致,但是不帶驅動器盤符並會移除開頭的路徑分隔符)。compress_type如果給出,它將覆蓋作為構造器compression形參對於新條目所給出的值。類似地,compresslevel如果給出也將覆蓋構造器。歸檔必須使用"w","x「或"a"模式打開。
將一個文件寫入歸檔。 內容為 data ,它可以是一個 str 或 bytes 的實例;如果是 str ,則會先使用 UTF-8 進行編碼。 zinfo_or_arcname 可以是它在歸檔中將被給予的名稱,或者是 ZipInfo 的實例。 如果它是一個實例,則至少必須給定文件名、日期和時間。 如果它是一個名稱,則日期和時間會被設為當前日期和時間。 歸檔必須以 'w', 'x' 或 'a' 模式打開。
ZIP文件的名稱
⑹ Python實現批量壓縮文件/文件夾——zipfile
zipfile是python里用來做zip格式編碼的壓縮和解壓縮的,由於是很常見的zip格式,所以這個模塊使用頻率也是比較高的,
在這里對zipfile的使用方法做一些記錄。即方便自己也方便別人。
Python zipfile模塊用來做zip格式編碼的壓縮和解壓縮的,要進行相關操作,首先需要實例化一個 ZipFile 對象。ZipFile 接受一個字元串格式壓縮包名稱作為它的必選參數,第二個參數為可選參數,表示打開模式,類似於文件操作,有r/w/a三種模式,分別代表讀、寫、添加,默認為r,即讀模式。
zipfile里有兩個非常重要的class, 分別是ZipFile和ZipInfo, 在絕大多數的情況下,我們只需要使用這兩個class就可以了。ZipFile是主要的類,用來創建和讀取zip文件而ZipInfo是存儲的zip文件的每個文件的信息的。
ZipFile還提供了如下常用的方法和屬性:
獲取zip文檔內指定文件的信息。返回一個zipfile.ZipInfo對象,它包括文件的詳細信息。
獲取zip文檔內所有文件的信息,返回一個zipfile.ZipInfo的列表。
獲取zip文檔內所有文件的名稱列表。
將zip文檔內的指定文件解壓到當前目錄。參數member指定要解壓的文件名稱或對應的ZipInfo對象;參數path指定了解析文件保存的文件夾;
解壓zip文檔中的所有文件到當前目錄。參數members的默認值為zip文檔內的所有文件名稱列表,也可以自己設置,選擇要解壓的文件名稱。
將zip文檔內的信息列印到控制台上。
設置zip文檔的密碼。
⑺ 用python解壓圖片並列印代碼
import zipfile
# 傳入壓縮文件zfile.zip獲取相關信息
zip_file = zipfile.ZipFile('zfile.zip')
# 獲取壓縮文件中的內容
f_content = zip_file.namelist()
# 壓縮前的大小
f_size = zip_file.getinfo('zfile/a.txt').file_size
# 壓縮後的大小
c_size = zip_file.getinfo('zfile/a.txt').compress_size
ZipFile 對象有一個 namelist()方法,返回 ZIP 文件中包含的所有文件和文件夾 的字元串的列表。這些字元串可以傳遞給 ZipFile 對象的 getinfo()方法,返回一個關 於特定文件的 ZipInfo 對象。ZipInfo 對象有自己的屬性,諸如表示位元組數的 file_size 和 compress_size,它們分別表示原來文件大小和壓縮後文件大小。ZipFile 對象表示 整個歸檔文件,而 ZipInfo 對象則保存該歸檔文件中每個文件的有用信息。
從 ZIP 文件中解壓縮
ZipFile 對象的 extractall()方法從 ZIP 文件中解壓縮所有文件和文件夾,放到當 前工作目錄中。
import zipfile
zip_file = zipfile.ZipFile('zfile.zip')
# 解壓
zip_extract = zip_file.extractall()
zip_extract.close()
運行這段代碼後, example.zip 的內容將被解壓縮到 C:。 或者, 你可以向 extractall()傳遞的一個文件夾名稱,它將文件解壓縮到那個文件夾,而不是當前工作 目錄。如果傳遞給 extractall()方法的文件夾不存在,它會被創建。例如,如果你用 exampleZip.extractall('C: delicious')取代處的調用,代碼就會從 example.zip 中解壓 縮文件,放到新創建的 C:delicious 文件夾中。
ZipFile 對象的 extract()方法從 ZIP 文件中解壓縮單個文件。
創建和添加到 ZIP 文件
要創建你自己的壓縮 ZIP 文件,必須以「寫模式」打開 ZipFile 對象,即傳入'w' 作為第二個參數(這類似於向 open()函數傳入'w',以寫模式打開一個文本文件)。
如果向 ZipFile 對象的 write()方法傳入一個路徑,Python 就會壓縮該路徑所指 的文件,將它加到 ZIP 文件中。write()方法的第一個參數是一個字元串,代表要添 加的文件名。第二個參數是「壓縮類型」參數,它告訴計算機使用怎樣的演算法來壓 縮文件。可以總是將這個值設置為 zipfile.ZIP_DEFLATED(這指定了 deflate 壓縮 演算法,它對各種類型的數據都很有效)。
import zipfile
zip_file = zipfile.ZipFile('new.zip','w')
# 把zfile整個目錄下所有內容,壓縮為new.zip文件
zip_file.write('zfile',compress_type=zipfile.ZIP_DEFLATED)
# 把c.txt文件壓縮成一個壓縮文件
# zip_file.write('c.txt',compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()
這段代碼將創建一個新的 ZIP 文件,名為 new.zip,它包含 spam.txt 壓縮後的內容。
要記住,就像寫入文件一樣,寫模式將擦除 ZIP 文件中所有原有的內容。如果 只是希望將文件添加到原有的 ZIP 文件中,就要向 zipfile.ZipFile()傳入'a'作為第二 個參數,以追加模式打開 ZIP 文件。
⑻ python壓縮文件設置解壓密碼_zipfile.setpassword(bytes('pass',"utf-8"))為什麼解壓不用密碼
將 readability 目錄中的文件壓縮到腳本所在目錄的 readability.zip 文件中,保持相同的文件結構,然後列印出生成的壓縮包 的文件列表,再用兩種方式分別解壓文件到腳本所在目錄的 output 目錄和 output/bak 目錄中。
⑼ 請問python的 zipfile 怎麼解壓中文密碼的zip文件
是python2還是3?
錯誤截圖看一下
也可以私信發zip包和代碼來測試一下
⑽ python怎樣壓縮和解壓縮ZIP文件
指令如下:
import zipfile
zip_ref = zipfile.ZipFile(path_to_zip_file, 'r')
zip_ref.extractall(directory_to_extract_to)
zip_ref.close()
其中zipfile是python自帶的一個工具包,用來解壓縮的,應該不需要安裝就有。