解压缩模块 zipfile

解压缩模块 zipfilezipfile一、创建一个ZipFile对象,表示一个zip文件classzipfile.ZipFile(file[,mode[,compression[,allowZip64]]])参数file表示文件的路径或类文件对象(file-likeobject)参数mode指示打开zip文件的模式,默认值为’r’,表示读已经存在的zip文件,也可以为’w’或’a’,’w’表示…

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

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

zipfile

一、创建一个ZipFile对象,表示一个zip文件

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

参数file表示文件的路径或类文件对象(file-like object)

参数mode指示打开zip文件的模式,默认值为’r’,表示读已经存在的zip文件,也可以为’w’或’a’,’w’表示新建一个zip文档或覆盖一个已经存在的zip文档,’a’表示将数据附加到一个现存的zip文档中。

参数compression表示在写zip文档时使用的压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。

如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。

二、常用功能

zipfile里有两个非常常用的class, 分别是ZipFile和ZipInfo,ZipFile用来创建和读取zip文件,ZipInfo是存储的zip文件的每个文件的信息的

1、zipfile.is_zipfile(filename)

判断一个文件是否为压缩文件

2、ZipFile.namelist()

获取zip文档内所有文件的名称列表

import zipfile
f = zipfile.ZipFile(filename, 'r')    #r表示是读取zip文件,w或a是创建一个zip文件

for f_name in f.namelist(): #.namelist() 返回压缩包内所有文件名的列表
    print(f_name)

3、ZipFile.extract(member[, path[, pwd]])

将zip文档内的指定文件解压到当前目录。参数member指定要解压的文件名称或对应的ZipInfo对象;参数path指定了解析文件保存的文件夹;参数pwd为解压密码

import zipfile, os
f = zipfile.ZipFile(os.path.join(os.getcwd(), 'duoduo.zip'))  #拼接成一个路径
for file in f.namelist():
  f.extract(file, r'd:/Work')     #在d:/Work中解压文件
f.close()

三、循环解压

该代码能遍历压缩包中的文件夹,遇到子压缩包,能够再次解压,直到解压完所有子压缩包。

“参数”的作用是:不删除原始压缩包,而删除所有子压缩包

import os, zipfile


class UnZip():
    def scan(self, source_dir):
        files = os.listdir(source_dir)
        n = 0
        for sub_file in files:
            n += 1
            sub_file_path = os.path.join(source_dir, sub_file)
            if os.path.isdir(sub_file_path):
                self.scan(sub_file_path)
            else:
                if sub_file_path.lower().endswith('.zip'):
                    print('hi')
                    output_sub_dir = sub_file_path[:-4]
                    self.unzip(sub_file_path, output_sub_dir)
                    self.scan(output_sub_dir)
                    if n != 1:
                        os.remove(sub_file_path)

    def unzip(self, file, folder):
        fz = zipfile.ZipFile(file, 'r')
        for sub_file_name in fz.namelist():
            fz.extract(sub_file_name, folder)


if __name__ == '__main__':
    UnZip().scan(r'D:\Projects\CA\script')

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SAE J1939物理层

    SAE J1939物理层在SAEJ1939-11和ISO11898中对商用车使用的线束都是屏蔽双绞线,即为除了电源、地、CAN_H、CAN_L之外还有一个屏蔽线,并且所有ECU的屏蔽线都接到同一个地线上,一般接地点选择在网络的中央位置上。但是在实际使用中,多数整车厂使用的都是非屏蔽双绞线,比较而言,非屏蔽双绞线的EMC特性要差一些,在1939中正常使用屏蔽双绞线一路CAN网络上最多可以接入30个ECU,而对于非屏蔽双

    2022年5月22日
    33
  • 韩国代理服务器_国内免费代理服务器

    韩国代理服务器_国内免费代理服务器由于台湾地区的地震影响到内地出口光缆,造成国内访问国外网站出现故障。推荐代理服务器:地址:222.231.50.97端口:80……[digit,linkhttp://wangxinyu.net/]…

    2022年4月19日
    143
  • stacktrace: java.lang.ClassCastException: java.util.HashMap cannot be cast to[通俗易懂]

    stacktrace: java.lang.ClassCastException: java.util.HashMap cannot be cast to[通俗易懂]今天线上发了好几封预警邮件,邮件内容如下:看了下项目报错的代码:ApiResult<WithdrawResultDto>withdrawResult=loanApiService.queryWithdrawResult(contractNo);WithdrawResultDtowithdraw=withdrawResult.getDa…

    2022年9月9日
    3
  • TCP三次握手四次挥手(通俗易懂版)

    TCP三次握手四次挥手(通俗易懂版)TCP连接的建立(三次握手)最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。三次握手通俗理解:TCP客户端是男孩子,TCP服务器是女孩子,男孩子要追女孩子,首先要建立恋爱关系。需要一个建立恋爱关系的过程。男孩:我们可以恋爱吗?(客户端请求服务器建立连接)女孩:你想追我?想清楚了!(服务器要求客户端确认连接)男孩:没错,你就是我的梦…

    2022年6月22日
    30
  • PHP在线客服系统平台源码(完全开源的网页在线客服系统)

    PHP在线客服系统平台源码(完全开源的网页在线客服系统)  在线客服系统是一个使用PHP、JavaScript和CSS开发的即时网页聊天咨询系统。该项目包含管理员和用户端。管理员端管理所有的管理,如编辑站点内容、管理提供者和预订,管理员在这个系统的管理中起着重要的作用。    在线客服系统源码及演示:zxkfym.top    对于用户部分,用户可以浏览主页、关于和服务。用户可以是顾客谁需要家庭服务或服务提供商提供家庭服务的人。为了注册为服务提供商,用户必须填写注册表格。然而,要将服务提供商作为客户预订,用户可以先搜索可用的服务提供商,然后再进行预订。该

    2022年7月19日
    70
  • RS232电平转换电路_rs422转rs232

    RS232电平转换电路_rs422转rs232介绍:SP3232EEN是RS-232电平转换芯片,与之相近的芯片还有SP3222,其区别见下表: 芯片特性:1、3.0V-5.5V供电;2、120kbps传输率;3、15kv空气放电;4、8kv接触放电。 型号选择: 内部结构图: 典型应用电路:  原创性文章,转载请注明出处CSDN:http://blog.csdn…

    2022年8月10日
    9

发表回复

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

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