zipfile模組 讀取(檢視)zip壓縮檔案

2022-06-20 09:24:11 字數 2347 閱讀 6059

import zipfile

examplezip = zipfile.zipfile('c:\\users\\del\\desktop\\新建資料夾 (2)\\新建資料夾 (2).zip')

for zip_file in examplezip.namelist():

try:

zip_file = zip_file.encode('cp437').decode('gbk')

except:

zip_file = zip_file.encode('utf-8').decode('utf-8')

print(zip_file)

examplezip.close();

python3中zipfile模組檔名亂碼問題

inux下zip檔案亂碼已經是乙個常見問題了,再加上python想不遇到亂碼問題都難。

在zipfile.zipfile中獲得的filename有中日文則很大可能是亂碼,這是因為

在zip標準中,對檔名的 encoding 用的不是 unicode,而可能是各種軟體根據系統的預設字符集來採用(此為猜測),而zipfile中根據檔案 flag 檢測的時候,只支援 cp437 和 utf-8。

具體zipfile模組中的源**如下

if flags & 0x800:

#utf-8 file names extension

filename = filename.decode('

utf-8')

else

:

#historical zip filename encoding

filename = filename.decode('

cp437')

可見編碼被正確識別為utf8時的情況外,都會被識別並decode為cp437編碼,但如果實際是gbk等其他編碼時就變為亂碼了。所以解決的方法在於被decode為cp437後重新再手動轉為正確的編碼。具體**如下:

#這裡是在zipfile.infolist()方法獲得的info中取得filename

name =info.filename

try:

#使用cp437對檔名進行解碼還原

name = name.encode('

cp437')

#win下一般使用的是gbk編碼

name = name.decode("

gbk"

)except

:

#如果已被正確識別為utf8編碼時則不需再編碼

pass

執行結果:

新建資料夾1/

新建資料夾1/新建資料夾/

新建資料夾1/新建文字文件 (2).txt

新建資料夾1/新建文字文件.txt

新建文字文件1.txt

import

zipfile

examplezip = zipfile.zipfile('

c:\\users\\del\\desktop\\新建資料夾 (2)\\新建資料夾 (2).zip')

print

(examplezip.namelist())

for zip_file in

examplezip.namelist():

try:

zip_file = zip_file.encode('

cp437

').decode('

gbk'

)

except

: zip_file = zip_file.encode('

utf-8

').decode('

utf-8')

print

(zip_file)

print(examplezip.getinfo('

11.txt

')) #

獲取某個檔案的詳細資訊的方法

xx = examplezip.getinfo('

11.txt')

print(xx.filename) #

代表檔案名字

print(xx.file_size) #

代表原檔案的大小

print(xx.compress_size) #

代表壓縮後檔案的大小

examplezip.close()

執行結果:

['11/', '11/2/', '11/22.txt', '11/222.txt', '11.txt']

11/11/2/

11/22.txt

11/222.txt

11.txt

11.txt

0

Python基礎 ZipFile模組

zipfile和zipinfo,在絕大多數的情況下,我們只需要使用這兩個class就可以了。zipfile是主要的類,用來建立和讀取zip檔案。而zipinfo是儲存的zip檔案的每個檔案的資訊的。import zipfile z zipfile.zipfile filename,r for i i...

python模組 zipfile檔案壓縮

zipfile模組是python中乙個處理壓縮檔案的模組,解決了不少我們平常需要處理壓縮檔案的需求 本文主要談談zipfile幾個常用的用法。首先我在windows作業系統中建立如下的檔案目錄 一 讀取壓縮檔案 import zipfile import os 壓縮檔案路徑 zip file pat...

Python模組zipfile原理及使用方法詳解

zipfile是python裡用來做zip格式編碼的壓縮和解壓縮的,由於是很常見的zip格式,所以這個模組使用頻率也是比較高的 zipfile裡有兩個非常重要的class,分別是zipfile和zipinfo,在絕大多數的情況下,我們只需要使用這兩個class就可以了。zipfile是主要的類,用來...