zoukankan      html  css  js  c++  java
  • zipfile模块——创建zip文件

    import zipfile
    import os
    
    print(os.getcwd())   #C:\Users\del\PycharmProjects\untitled1\cs
    
    newZip = zipfile.ZipFile('C:\\Users\\del\\Desktop\\新建文件夹 (2)\\新建文件夹 (2).zip','w')
    
    
    newZip.write('C:\\Users\\del\\Desktop\\新建文件夹 (2)\\新建文件夹 (2)\\11.txt',compress_type=zipfile.ZIP_DEFLATED)
    
    newZip.close()

    创建ZIP文件需要使用写模式,即将压缩包名称和写模式代号分别作为ZipFile方法的第一、第二个参数传入。示例代码如下:

    >>> import zipfile
    >>> newZip = zipfile.ZipFile(‘new.zip’, ‘w’)
    >>> newZip.write(‘spam.txt’, compress_type=zipfile.ZIP_DEFLATED)
    >>> newZip.close()

    以上第二行代码新建了一个名为 new.zip 的压缩文件,并以写模式打开。

    第三行中用 ZipFile 对象的 write() 方法添加文件到压缩包中,

    该方法的第一个参数为需要添加进去的文件名,

    第二个参数为压缩算法,通常使用如上代码中的 ZIP_DEFLATED 即可。

    需要注意的是,类似于文件的写操作,如果目录中已存在同名的压缩文件,则原有文件将会被重写!

    如果需要继续添加文件到已有的压缩文件中,则在实例化 ZipFile 对象时,使用 ‘a’ 作为第二个参数即可。

    ==================================================================================================

    Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作。要进行相关操作,首先需要实例化一个 ZipFile 对象。ZipFile 接受一个字符串格式压缩包名称作为它的必选参数,第二个参数为可选参数,表示打开模式,类似于文件操作,有r/w/a三种模式,分别代表读、写、添加,默认为r,即读模式。

    1. zip 文件查看

    假设当前有如下文件结构:

    The contents of example.zip

    代码演示如下:

    >>> import zipfile, os
    >>> os.chdir(‘C:\\’) # move to the folder with example.zip
    >>> exampleZip = zipfile.ZipFile(‘example.zip’)
    >>> exampleZip.namelist()
    [‘spam.txt’, ‘cats/’, ‘cats/catnames.txt’, ‘cats/zophie.jpg’]
    >>> spamInfo = exampleZip.getinfo(‘spam.txt’)
    >>> spamInfo.file_size
    13908
    >>> spamInfo.compress_size
    3828
    >>> ‘Compressed file is %sx smaller!’ % (round(spamInfo.file_size / spamInfo
    .compress_size, 2))
    ‘Compressed file is 3.63x smaller!’
    >>> exampleZip.close()

    如上代码所示,ZipFile 对象拥有一个名为 namelist() 的方法,该方法返回一个所含该压缩包所有文件及文件夹的字符串列表。可以把返回的列表中的字符串传递到 getinfo() 方法中,以获取特定文件或文件夹的更多信息。getinfo() 方法还拥有以下属性:

    • file_size 可获得原文件或文件夹大小
    • compress_size 或获得压缩后的文件或文件夹大小

    2. zip文件解压

    利用 ZipFile 对象的 extractall() 方法可以对整个压缩包进行解压。extractall() 方法接受一个绝对路径名称字符串为可选参数,解压后的文件将会入在传入的目录中。示例代码如下:

    >>> import zipfile, os
    >>> os.chdir(‘C:\\’) # move to the folder with example.zip
    >>> exampleZip = zipfile.ZipFile(‘example.zip’)
    >>> exampleZip.extractall()
    >>> exampleZip.close()

    上例中,extractall() 方法没有被传入参数,因为文件被解压到当前的工作目录中。如果被传入的目录不存在,则Python将新建该目录。

    也可以利用 ZipFile 对象的 extract() 方法对压缩包中的某个特定文件进行解压,extract() 方法的使用示例如下:

    >> exampleZip.extract(‘spam.txt’)
    ‘C:\\spam.txt’
    >>> exampleZip.extract(‘spam.txt’, ‘C:\\some\\new\\folders’)
    ‘C:\\some\\new\\folders\\spam.txt’
    >>> exampleZip.close()

    如上所示,当 extract() 方法可接收一个压缩包中的文件名作为参数,将其解压到当前目录中。也可以用一个绝对路径名称字符串作为该方法的第二个参数,将特定文件解压到该目录中,如果该目录不存在,Python程序将新建该目录。

    3. 创建和增加文件到 ZIP 文件中

    创建ZIP文件需要使用写模式,即将压缩包名称和写模式代号分别作为ZipFile方法的第一、第二个参数传入。示例代码如下:

    >>> import zipfile
    >>> newZip = zipfile.ZipFile(‘new.zip’, ‘w’)
    >>> newZip.write(‘spam.txt’, compress_type=zipfile.ZIP_DEFLATED)
    >>> newZip.close()

    以上第二行代码新建了一个名为 new.zip 的压缩文件,并以写模式打开。第三行中用 ZipFile 对象的 write() 方法添加文件到压缩包中,该方法的第一个参数为需要添加进去的文件名,第二个参数为压缩算法,通常使用如上代码中的 ZIP_DEFLATED 即可。需要注意的是,类似于文件的写操作,如果目录中已存在同名的压缩文件,则原有文件将会被重写!如果需要继续添加文件到已有的压缩文件中,则在实例化 ZipFile 对象时,使用 ‘a’ 作为第二个参数即可。

  • 相关阅读:
    Linux下查看使用的是哪种shell的方法汇总【转】
    Shell中的while循环【转】
    shell浅谈之三for、while、until循环【转】
    cpu_relax( )-----对自选循环等待(spin-wait loops)操作的优化【转】
    Linux makefile 教程 非常详细,且易懂【转】
    链表常见的问题【转】
    linux内核同步之信号量、顺序锁、RCU、完成量、关闭中断【转】
    linux内核同步之每CPU变量、原子操作、内存屏障、自旋锁【转】
    关于hrtimer_forward小段代码的分析【转】
    CTP多点触摸协议【转】
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12381035.html
Copyright © 2011-2022 走看看