python的zipfile.open_python之zipfile[通俗易懂]

python的zipfile.open_python之zipfile[通俗易懂]1简述zip文件是一个常用的归档和与压缩标准。zipfile模块提供了创建、读取、写入、添加及列出zip文件的工具。zipfile里有2个非常常用的class,分别是Zipfile和ZipInfo,在绝大多数情况下,我们只需要使用这2个class就可以了。Zipfile是主要的类,用于创建和读取zip文件,而ZipInfo是储存zip文件每个信息的。2Zipfile基本操作1创建一个zip对…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1 简述

zip文件是一个常用的归档和与压缩标准。

zipfile模块提供了创建、读取、写入、添加及列出zip文件的工具。

zipfile里有2个非常常用的class,分别是Zipfile和ZipInfo,在绝大多数情况下,我们只需要使用这2个class就可以了。

Zipfile是主要的类,用于创建和读取zip文件,而ZipInfo是储存zip文件每个信息的。

2 Zipfile基本操作

1 创建一个zip对象

file_zip = zipfile.ZipFile(r’D:\workspace\pachong\ceshi\channel.zip’, ‘r’)

2 返回压缩包内所有文件名的列表

file_name = file_zip.namelist()

3 获取指定文件的信息

file_infor = file_zip.getinfo(’29.txt’)

4 获取zip文档内所有文件的信息

info_list = file_zip.infolist()

5 将文档内的指定文件解压到当前目录

file_zip.extract(’29.txt’)

6 将zip文件的信息打印到控制台上

file_zip.printdir()

7 设置zip文档的密码

file_zip.setpassword(pwd)

8 获取zip文档内指定文件的二进制数据

file_zip.read()

9 将指定文件添加到zip文档中

file_zip.write(filename[, arcname[, compress_type]])

filename为文件路径,arcname为添加到zip文档之后保存的名称, 参数compress_type表示压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。

10 将二进制数据直接写入到压缩文档

file_zip.writestr(zinfo_or_arcname, bytes)

3 ZipInfo基本操作

ZipFile.getinfo(name) 方法返回的是一个ZipInfo对象,表示zip文档中相应文件的信息。它支持如下属性:

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: 获取未压缩的文件大小。

4 示例

zip文档内包括一个duoduo.txt的文本文件,使用read()方法读取其二进制数据,然后保存到D:/duoduo.txt。

import zipfile, os

zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), ‘duoduo.zip’))

data = zipFile.read(‘duoduo.txt’)

with open(r’d:/duoduo.txt’,’wb’) as f:

for d in data:

f.write(d)

创建一个zip文档,并将文件D:/test.doc添加到压缩文档中

import zipfile, os

zipFile = zipfile.ZipFile(r’D:/test.zip’), ‘w’)

zipFile.write(r’D:/test.doc’, ‘保存的名字’, zipfile.ZIP_DEFLATED)

zipFile.close()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192760.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月8日 下午7:43
下一篇 2025年12月8日 下午8:15


相关推荐

  • vue转json串_vue中怎么声明一个数组

    vue转json串_vue中怎么声明一个数组一些常用更多方法介绍文章目录前言一、vue对象转数组?二、JSON数据转换1、JSON.parse2、JSON.stringify2.1、JSON.stringify高级使用总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、vue对象转数组?示例:工作中我们经常会因为和接口收到数据类型不一致,这个时候需要我们自己手动转换.

    2025年10月22日
    6
  • SpringBoot——ResponseBody

    SpringBoot——ResponseBody很多情况下我们希望后端的调用结果能直接写入Http的响应体中以供前端获取来更新页面显示,此时需要我们在以@controller为注解的类中对相应方法加上@ResponseBody注解:@ControllerclassHelloWorldController{@RequestMapping(“/hello”)@ResponseBodypublicStringhello(){return”HelloWorld!”;}}我们也可

    2022年5月28日
    41
  • 负数补码的移位规则

    负数补码的移位规则由原码求得补码的方法 1 定义法补码解决了计算机在进行数值运算的两个问题 一个是减法运算能不能使用加法电路 另一个是原码中 0 的表示不唯一 正数的补码就是其原码 整数负数的补码是 真值 以 2 为底以数值位数加一为指数的幂 模 即以这个幂为模的补数 这里描述下补码的几何意义 大家可以画一个数轴 假定数值位有三位 模是 16 那么加上一位符号位 数轴从 0 000 开始往右依次加一是 0 001 0 010 0 011 0 111 共八个数 这个时候如果继续

    2026年3月17日
    4
  • Product hunt自动调研工作流

    Product hunt自动调研工作流

    2026年3月15日
    2
  • arping 命令解析

    arping 命令解析一、介绍ARP协议是“AddressResolutionProtocol”(地址解析协议)的缩写。在同一以太网中,通过地址解析协议,源主机可以通过目的主机的IP地址获得目的主机的MAC地址。arping程序就是完成上述过程的程序。arping,用来向局域网内的其它主机发送ARP请求的指令,它可以用来测试局域网内的某个IP是否已被使用。 二、指令格式如下:arping[-AbDfhqUV][…

    2022年5月1日
    50
  • Mybatis调用存储过程

    Mybatis调用存储过程调用存储过程 mybatis 调用存储过程时需要指定 statementTyp CALLABLE 这样 Mybatis 内部中调用 sql 语句时将采用 CallableStat 而 CallableStat 内部将使用 CallableStat 来调用存储过程 如果存储过程是有参数的 需要指定 mode 属性 可选值有 IN OUT 和 INOUT 当 mode 为 OUT

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号