中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python壓縮包處理模塊zipfile和py7zr怎么使用

發布時間:2022-07-06 14:25:42 來源:億速云 閱讀:725 作者:iii 欄目:開發技術

這篇“Python壓縮包處理模塊zipfile和py7zr怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Python壓縮包處理模塊zipfile和py7zr怎么使用”文章吧。

一:zipfile的常用操作

1,壓縮文件

 zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])

         參數file表示文件的路徑;參數mode指示打開zip文件的模式,有三種mode

  • 解壓:r

  • 壓縮:w

  • 追加壓縮:a 

默認值為'r',表示讀已經存在的zip文件,也可以為'w'或'a','w'表示新建一個zip文檔或覆蓋一個已經存在的zip文檔,‘a’表示追加壓縮

下面我們創建一個壓縮文件result.zip,并壓縮test文件夾下的所有文件

import zipfile
import os
 
testdir = "D:\\FTZ\\python_tool\\result\\test"
filename = "./result.zip"
z = zipfile.ZipFile(filename, 'w')  
for d in os.listdir(testdir):
	z.write(d)
	z.close

當然上面還可以用with的方法打開

import zipfile
import os
 
testdir = "D:\\DPI\\python_tool\\result\\test"
filename = "./result.zip"
with zipfile.ZipFile(filename, 'w')  as z:
	for d in os.listdir(testdir):
		z.write(d)
		z.close

2,解壓縮文件

import zipfile
import os
 
testdir = "D:\\FTZ\\python_tool\\result\\test"
filename = "./result.zip"
with zipfile.ZipFile(filename, 'r')  as z:
	z.extractall(testdir)

需要注意的是有些壓縮包解壓是有密碼,這時候調用extractall的時候也支持輸入密碼,在python3中,解壓文件的密碼參數 pwd 接收的是二進制的值,所以要在前面加一個 b

z.extractall(testdir,pwd=b"ftz")

3,列出壓縮包里的所有文件

import zipfile
import os
testdir = "D:\\DPI\\python_tool\\result\\test"
filename = "./result.zip"
with zipfile.ZipFile(filename, 'r')  as z:
	files = z.namelist()
	print(files)

運行結果如下,返回的是一個列表:

Python壓縮包處理模塊zipfile和py7zr怎么使用

 4,其他常用的方法

import zipfile
import os
 
testdir = "D:\\ftz\\python_tool\\result\\test"
filename = "./result.zip"
with zipfile.ZipFile(filename, 'r')  as z:
	z.setpassword(b'ftz1')  #設置zip文檔的密碼。
	z.printdir()     #將zip文檔內的信息打印到控制臺上。
	data = z.read('file.yaml')  #獲取zip文檔內指定文件的二進制數據
	print(data) 
	info = z.getinfo('file.yaml')  #方法返回的是一個ZipInfo對象,表示zip文檔中相應文件的信息。它支持如下屬性
	print("獲取文件名稱:",info.filename)
	print("獲取文件最后修改時間:",info.date_time)
	print("獲取壓縮類型:",info.compress_type)
	print("獲取壓縮后的大小:",info.compress_size)
	print("獲取未壓縮的文件大小:",info.file_size)
 
print("判斷是否是壓縮文件:",zipfile.is_zipfile(filename))

運行結果如下:

File Name                                             Modified             Size
data_yaml.yaml                                 2022-06-25 10:50:42          198
file.yaml                                      2022-06-25 10:13:46          123
vnfname.txt                                    2022-01-14 11:27:56         9320
b'\xe4\xb8\x80\xe7\xba\xa7\xe6\xa0\x87\xe9\xa2\x98:\n    \xe4\xba\x8c\xe7\xba\xa7\xe6\xa0\x87\xe9\xa2\x981:\n        b:1\n        c:2\n        a:3\n    \xe4\xba\x8c\xe7\xba\xa7\xe6\xa0\x87\xe9\xa2\x982:\n        f:7\n        t:8\n        z:9'
獲取文件名稱: file.yaml
獲取文件最后修改時間: (2022, 6, 25, 10, 13, 46)
獲取壓縮類型: 0
獲取壓縮后的大小: 123
獲取未壓縮的文件大小: 123
判斷是否是壓縮文件: True
[Finished in 0.2s]

當然getinfo也支持其他的屬性,下面給出比較全的屬性和方法

ZipInfo.filename: 獲取文件名稱。

ZipInfo.date_time: 獲取文件最后修改時間。返回一個包含6個元素的元組:(年, 月, 日, 時, 分, 秒)

ZipInfo.compress_type: 壓縮類型。

ZipInfo.comment: 文檔說明。

ZipInfo.extr: 擴展項數據。

ZipInfo.create_system: 獲取創建該zip文檔的系統。

ZipInfo.create_version: 獲取 創建zip文檔的PKZIP版本。

ZipInfo.extract_version: 獲取 解壓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: 獲取未壓縮的文件大小。

 二:py7zr的常用操作

 1,壓縮文件

import py7zr
 
with py7zr.SevenZipFile('target.7z', 'w') as archive:
    archive.writeall('/path/to/base_dir', 'base')

如果想設置密碼壓縮

import py7zr
 
with py7zr.SevenZipFile('target.7z', 'w', password='secret') as archive:
    archive.writeall('/path/to/base_dir', 'base')

2,解壓縮文件

import py7zr
 
archive = py7zr.SevenZipFile('sample.7z', mode='r')
archive.extractall(path="/tmp")
archive.close()

也支持with模式

import py7zr
 
with py7zr.SevenZipFile('sample.7z', mode='r') as z:
    z.extractall()
 
with py7zr.SevenZipFile('target.7z', 'w') as z:
    z.writeall('./base_dir')

py7z也支持提取某個文件或者符合正則匹配的文件

import py7zr
import re
 
filter_pattern = re.compile(r'<your/target/file_and_directories/regex/expression>')
with SevenZipFile('archive.7z', 'r') as archive:
    allfiles = archive.getnames()
    selective_files = [f for f in allfiles if filter_pattern.match(f)]
    archive.extract(targets=selective_files)

支持解壓縮加密的7z文件

import py7zr
 
with py7zr.SevenZipFile('encrypted.7z', mode='r', password='secret') as z:
    z.extractall()

以上就是關于“Python壓縮包處理模塊zipfile和py7zr怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凤城市| 礼泉县| 丽水市| 宁津县| 湟源县| 文安县| 中牟县| 莱芜市| 五大连池市| 瓦房店市| 霍山县| 辉县市| 明溪县| 鹤岗市| 垦利县| 通化市| 富蕴县| 新宾| 利川市| 宜黄县| 子长县| 永康市| 小金县| 八宿县| 方正县| 隆化县| 宿松县| 安义县| 雅安市| 虞城县| 苏州市| 嘉定区| 渭源县| 清镇市| 高邮市| 边坝县| 湖口县| 宜良县| 福安市| 南江县| 太谷县|