Python压缩包处理模块zipfile和py7zr操作代码

目录
  • 一:zipfile的常用操作
    • 1,压缩文件
    • 2,解压缩文件
    • 3,列出压缩包里的所有文件
    • 4,其他常用的方法
  • 二:py7zr的常用操作
    • 1,压缩文件
    • 2,解压缩文件

目前对文件的压缩和解压缩比较常用的格式就是zip格式和7z格式,今天就以一篇文章来融会贯通会该两个压缩文件格式的操作。

一: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)

运行结果如下,返回的是一个列表:

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的文章就介绍到这了,更多相关Python zipfile和py7zr压缩包模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python 标准库zipfile将文件夹加入压缩包的操作方法

    zipfile模块是python中一个处理压缩文件的模块,解决了不少我们平常需要处理压缩文件的需求.大家还知道Python zipfile 库可用于压缩/解压 zip 文件. 本文介绍一下如何创建压缩包. 将 "文件" 加入压缩包 假设目录结构如下: my_project |- 唐诗三百首.txt # 这是要打包的文件 |- demo.py # 演示代码会在这里编写 |- _______ # 我们想要在这里生成一个名为 "output.zip" 的文件 "

  • python标准库压缩包模块zipfile和tarfile详解(常用标准库)

    目录 常用的标准库 zip格式 ZipFile参数说明 操作含义 压缩方法 常用方法 tar包 和 gz.bz2.xz格式 删除压缩包中的文件 常用的标准库 在我们常用的系统windows和Linux系统中有很多支持的压缩包格式,包括但不限于以下种类:rar.zip.tar,以下的标准库的作用就是用于压缩解压缩其中一些格式的压缩包. zip格式 import zipfile zipfile模块操作压缩包使用ZipFile类进行操作,使用方法和open的使用方法很相似,也是使用r.w.x.a四种操

  • Python中zipfile压缩包模块的使用

    简介 ZIP 文件格式是一个常用的归档与压缩标准,zipfile 模块提供了创建.读取.写入.添加及列出 ZIP 文件的工具 此模块目前不能处理分卷 ZIP 文件,支持解密 ZIP 归档中的加密文件,但是目前不能创建一个加密的文件.解密非常慢,因为它是使用原生 Python 而不是 C 实现的 压缩文件 class zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None

  • Python压缩包处理模块zipfile和py7zr操作代码

    目录 一:zipfile的常用操作 1,压缩文件 2,解压缩文件 3,列出压缩包里的所有文件 4,其他常用的方法 二:py7zr的常用操作 1,压缩文件 2,解压缩文件 目前对文件的压缩和解压缩比较常用的格式就是zip格式和7z格式,今天就以一篇文章来融会贯通会该两个压缩文件格式的操作. 一:zipfile的常用操作 1,压缩文件 zipfile.ZipFile(file[, mode[, compression[, allowZip64]]]) 参数file表示文件的路径:参数mode指示打开

  • Python基于plotly模块实现的画图操作示例

    本文实例讲述了Python基于plotly模块实现的画图操作.分享给大家供大家参考,具体如下: import plotly plotly.tools.set_credentials_file(username='tianjixuetu', api_key='xxxxxxxx')#此处要去官网申请自己的api,#https://plot.ly/ssu/ #案例1 import plotly.plotly as py from plotly.graph_objs import * trace0 =

  • Python使用jsonpath-rw模块处理Json对象操作示例

    本文实例讲述了Python使用jsonpath-rw模块处理Json对象操作.分享给大家供大家参考,具体如下: 这两天在写一个爬虫,需要从网站返回的json数据提取一些有用的数据. 向url发起请求,返回的是response,在python3中,response.content是二进制bytes类型的,需要用decode()转成unicode的str类型 #如果用的requests发的请求 import json response = requests.get(url,headers=self.

  • python使用hdfs3模块对hdfs进行操作详解

    之前一直使用hdfs的命令进行hdfs操作,比如: hdfs dfs -ls /user/spark/ hdfs dfs -get /user/spark/a.txt /home/spark/a.txt #从HDFS获取数据到本地 hdfs dfs -put -f /home/spark/a.txt /user/spark/a.txt #从本地覆盖式上传 hdfs dfs -mkdir -p /user/spark/home/datetime=20180817/ .... 身为一个python程

  • Python利用keyboard模块实现键盘记录操作

    目录 1.准备 2.基本使用 3.高级功能 模拟键盘操作执行自动化任务,我们常用的有 pyautowin 等自动化操作模块.但是这些模块有一个很大的缺点,编译的时候非常依赖 windows 的C语言底层模块. 今天介绍的这个模块叫做 keyboard 它有一个最大的优点:纯Python原生开发,编译时完全不需要依赖C语言模块.一行命令就能完成安装,非常方便. 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装.

  • Python使用docx模块实现刷题功能代码

    起由: 前一阵子想要刷一刷国二Python的题库,千方百计找到题库之后,打开一个个word文档,发现一题一题阅读很麻烦,而且答案就在题目的下面,阅读题目的时候想自己做出题目却又总能不经意看到答案,甚烦!遂开始敲代码,我要一题一题做,还不能看见答案. 着手: word文档是这样的: 观察word内容,每道题目的题目内容和题目答案都是一样的格式,包括缩进.字体等等,那么就可以使用Python对文件的读操作,浏览文档的内容,在适当的内容区域设置输入,将输入与答案进行判断是否相等,即可实现简单的刷题功能

  • Python 处理表格进行成绩排序的操作代码

    一.需求分析 我们首先有一个成绩表单,但是学生的成绩是按照学号进行排序的,现在,我们希望清晰明了的知道每一个学生的名次,并且需要将学生按照成绩的高低重新进行排序. 也就是说,我们将学生从按照学号排序转变为按照成绩从高到低进行排序. 二.代码呈现 这个需求其实比较简单,于是,我们直接呈现代码,主要问题是Excel表格的读写操作,这个解决以后就十分简单了. Excel读:xlrd模块 Excel写:xlwt模块 代码以及解释如下: import xlwt import xlrd # 导入模块 wb

  • python的Crypto模块实现AES加密实例代码

    本文主要探索的是python的Crypto模块实现AES加密,分享了具体实现代码,下面看看具体内容. 学了使用Crypto模块的AES来加密文件,现在记录下来便于后边儿查看. 在刚开始知道这个模块的时候,连基本的Crypto模块的安装都花了很多很多时间来搞,也不知道什么情况反正是折腾很久了才安装起的,记得是包安装起来了,但使用的时候始终提示找不到Crypto.Cipher模块.然后怎么解决的呢? 一.把我的python换成了64位的,本来电脑就是64位的也不知道之前是啥情况安装成32位的了.(O

  • Python中join()函数多种操作代码实例

    这篇文章主要介绍了Python中join()函数多种操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python中有.join()和os.path.join()两个函数,具体作用如下: . join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 os.path.join(): 将多个路径组合后返回 对序列进行操作(分别使用' ' .' - '与':'作为分隔符) a=['1aa','

  • python之pygame模块实现飞机大战完整代码

    本文实例为大家分享了python之pygame模块实现飞机大战的具体代码,供大家参考,具体内容如下 Python飞机大战步骤: 1.数据区 2.主界面 3.飞船 4.事件监控及边界 5.外星人 6.记分系统 飞机大战效果图: 源码: """ 功能:飞机大战 time:2019/10/3 """ import os import pygame import sys import time from pygame.sprite import Spri

随机推荐