欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python壓縮包處理模塊zipfile和py7zr操作代碼

 更新時(shí)間:2022年06月26日 14:52:26   作者:ftzchina  
目前對(duì)文件的壓縮和解壓縮比較常用的格式就是zip格式和7z格式,這篇文章主要介紹了Python壓縮包處理模塊zipfile和py7zr,需要的朋友可以參考下

目前對(duì)文件的壓縮和解壓縮比較常用的格式就是zip格式和7z格式,今天就以一篇文章來融會(huì)貫通會(huì)該兩個(gè)壓縮文件格式的操作。

一:zipfile的常用操作

1,壓縮文件

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

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

  • 解壓:r
  • 壓縮:w
  • 追加壓縮:a 

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

下面我們創(chuàng)建一個(gè)壓縮文件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

當(dāng)然上面還可以用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)

需要注意的是有些壓縮包解壓是有密碼,這時(shí)候調(diào)用extractall的時(shí)候也支持輸入密碼,在python3中,解壓文件的密碼參數(shù) pwd 接收的是二進(jìn)制的值,所以要在前面加一個(gè) 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)

運(yùn)行結(jié)果如下,返回的是一個(gè)列表:

 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')  #設(shè)置zip文檔的密碼。
	z.printdir()     #將zip文檔內(nèi)的信息打印到控制臺(tái)上。
	data = z.read('file.yaml')  #獲取zip文檔內(nèi)指定文件的二進(jìn)制數(shù)據(jù)
	print(data) 
	info = z.getinfo('file.yaml')  #方法返回的是一個(gè)ZipInfo對(duì)象,表示zip文檔中相應(yīng)文件的信息。它支持如下屬性
	print("獲取文件名稱:",info.filename)
	print("獲取文件最后修改時(shí)間:",info.date_time)
	print("獲取壓縮類型:",info.compress_type)
	print("獲取壓縮后的大?。?,info.compress_size)
	print("獲取未壓縮的文件大小:",info.file_size)
 
print("判斷是否是壓縮文件:",zipfile.is_zipfile(filename))

運(yùn)行結(jié)果如下:

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
獲取文件最后修改時(shí)間: (2022, 6, 25, 10, 13, 46)
獲取壓縮類型: 0
獲取壓縮后的大?。?123
獲取未壓縮的文件大?。?123
判斷是否是壓縮文件: True
[Finished in 0.2s]

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

ZipInfo.filename: 獲取文件名稱。

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

ZipInfo.compress_type: 壓縮類型。

ZipInfo.comment: 文檔說明。

ZipInfo.extr: 擴(kuò)展項(xiàng)數(shù)據(jù)。

ZipInfo.create_system: 獲取創(chuàng)建該zip文檔的系統(tǒng)。

ZipInfo.create_version: 獲取 創(chuàng)建zip文檔的PKZIP版本。

ZipInfo.extract_version: 獲取 解壓zip文檔所需的PKZIP版本。

ZipInfo.reserved: 預(yù)留字段,當(dāng)前實(shí)現(xiàn)總是返回0。

ZipInfo.flag_bits: zip標(biāo)志位。

ZipInfo.volume: 文件頭的卷標(biāo)。

ZipInfo.internal_attr: 內(nèi)部屬性。

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')

如果想設(shè)置密碼壓縮

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也支持提取某個(gè)文件或者符合正則匹配的文件

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()

到此這篇關(guān)于Python壓縮包處理模塊zipfile和py7zr的文章就介紹到這了,更多相關(guān)Python zipfile和py7zr壓縮包模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python tkinter組件使用詳解

    python tkinter組件使用詳解

    這篇文章主要介紹了python tkinter組件使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • PyQt5中向單元格添加控件的方法示例

    PyQt5中向單元格添加控件的方法示例

    這篇文章主要介紹了PyQt5中向單元格添加控件的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python實(shí)現(xiàn)自動(dòng)生成C++代碼的代碼生成器

    python實(shí)現(xiàn)自動(dòng)生成C++代碼的代碼生成器

    這篇文章介紹了python實(shí)現(xiàn)C++代碼生成器的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Python?Django教程之實(shí)現(xiàn)新聞應(yīng)用程序

    Python?Django教程之實(shí)現(xiàn)新聞應(yīng)用程序

    Django是一個(gè)用Python編寫的高級(jí)框架,它允許我們創(chuàng)建服務(wù)器端Web應(yīng)用程序。在本文中,我們將了解如何使用Django創(chuàng)建新聞應(yīng)用程序,感興趣的可以嘗試一下
    2022-10-10
  • Python?Django框架中表單的用法詳解

    Python?Django框架中表單的用法詳解

    這篇文章主要為大家詳細(xì)介紹了Python?Django框架中表單的用法,例如表單的驗(yàn)證以及利用表單實(shí)現(xiàn)文件上傳等,感興趣的小伙伴可以了解一下
    2022-06-06
  • numpy拼接矩陣的實(shí)現(xiàn)

    numpy拼接矩陣的實(shí)現(xiàn)

    本文主要介紹了numpy拼接矩陣的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 用Python的Django框架完成視頻處理任務(wù)的教程

    用Python的Django框架完成視頻處理任務(wù)的教程

    這篇文章主要介紹了用Python的Django框架完成視頻處理任務(wù)的教程,包括用戶的視頻上傳和播放以及下載功能的實(shí)現(xiàn),需要的朋友可以參考下
    2015-04-04
  • python如何求取指定范圍內(nèi)的質(zhì)數(shù)

    python如何求取指定范圍內(nèi)的質(zhì)數(shù)

    這篇文章主要介紹了python如何求取指定范圍內(nèi)的質(zhì)數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python實(shí)現(xiàn)網(wǎng)頁錄音效果

    python實(shí)現(xiàn)網(wǎng)頁錄音效果

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)網(wǎng)頁錄音效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Python操作Excel的學(xué)習(xí)筆記

    Python操作Excel的學(xué)習(xí)筆記

    這篇文章主要介紹了Python操作Excel的學(xué)習(xí)筆記,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評(píng)論