python:使用zipfile操作ZIP文件

liftword2个月前 (03-03)技术文章15
import zipfile
import os
#  使用zipfile操作ZIP文件
#  创建和添加文件到 ZIP 文件、读取 ZIP 文件、从 ZIP 文件中解压缩、文件夹备份到 ZIP 文件

def createZipFile():
    print("================创建和添加到 ZIP 文件==================")
    zipFile = zipfile.ZipFile('test.zip', 'w')
    #  write()
    #  第一个参数是一个字符串,代表要添加的文件名。
    #  第二个参数是压缩类型,指定压缩算法。
    #  可以总是将这个值设置为 zipfile.ZIP_DEFLATED(deflate 压缩算法,对各种类型的数据都很有效)。
    zipFile.write('spam001.txt', compress_type=zipfile.ZIP_DEFLATED)
    zipFile.write('spam003.txt', compress_type=zipfile.ZIP_DEFLATED)
    zipFile.write('spam007.txt', compress_type=zipfile.ZIP_DEFLATED)
    zipFile.close()


def readZipFileInfo():
    print("================读取 ZIP 文件==================")
    zipFile = zipfile.ZipFile("test.zip", 'r')
    print(zipFile.namelist())
    fileInfo = zipFile.getinfo('spam003.txt')
    print(fileInfo)
    print(fileInfo.file_size)
    print(fileInfo.compress_size)
    zipFile.close()


def unZipFile():
    print("================从 ZIP 文件中解压缩==================")
    file = zipfile.ZipFile("test.zip")
    file.extractall()  # 解压到当前工作目录
    # file.extractall('./')  # 解压到指定目录
    # file.extract('spam001.txt')  # 解压单个文件到当前工作目录
    # file.extract('spam003.txt', './')  # 解压单个文件到指定目录
    file.close()


def delTxtFile():
    # 删除文件
    for rfile in os.listdir('./'):
        if rfile.endswith('.txt'):
            os.remove(rfile)


def doDocZip(path):
		# 为整个文件夹创建一个 ZIP 文件,作为“快照”。
		# 你希望保存不同的版本,希望 ZIP 文件的文件名每次创建时都有所变化。
		# 例如 AlsPythonBook_1.zip、AlsPythonBook_2.zip、AlsPythonBook_3.zip,等等

    # 确保为绝对路径
    path = os.path.abspath(path)
    basename = os.path.basename(path)

    num = 1
    while True:
        # 用要压缩的目录名加序号作为备份的zip文件名
        zipFileName = basename + "_" + str(num) + ".zip"
        if os.path.exists("./file/" + zipFileName):
            num += 1
        else:
            break

    # 创建备份zip文件
    print('Creating %s...' % zipFileName)
    backZip = zipfile.ZipFile("./file/" + zipFileName, 'w')

    # 遍历需要备份的目录,写入zip文件
    for folderName, subFolders, fileNames in os.walk(path):
        # folderName:当前目录名称的字符串
        if len(os.listdir(folderName)) >= 1:  # 空目录不压缩
            print('Adding files in %s...' % folderName)
            backZip.write(folderName, folderName)

        # 当前目录中文件名称的字符串列表
        for filename in fileNames:
            if filename.startswith(basename) and filename.endswith(".zip"):
                continue
            else:
                backZip.write(os.path.join(folderName, filename), compress_type=zipfile.ZIP_DEFLATED)

    backZip.close()
    print('Done.')

相关文章

最全RAR文件操作指南:如何用Python压缩、解压与筛选文件

引言:Python 对 .rar 文件进行压缩、解压以及筛选特定文件的操作代码封装一下import os import rarfile #todo 用于处理 RAR 文件 import zipfil...

20 天学 Python 文件操作:Day 8 压缩与解压文件

在日常开发中,压缩和解压文件是处理文件操作的常见需求。Python 提供了丰富的内置模块,比如 zipfile 和 shutil,让我们能够高效地压缩和解压文件。今天我们将学习如何使用这些模块进行操作...

Python全能压缩:ZIP的压缩、解压、文件筛选与删除,一键搞定!

引言:这个方法实现了文件压缩与解压的常见操作,涵盖内容如下:1、从文件夹创建 ZIP 文件 2、从文件夹创建 ZIP 文件(筛选特定文件) 3、解压 ZIP 文件中的所有内容 4、解压 ZIP...

使用 Python 压缩 PDF 或减小 PDF 文件大小的 5 种方法

在存储、共享和传输方面,处理大型 PDF 文件可能是一个真正的挑战。PDF 压缩提供了一种有效的解决方案来减小文件大小,使文档更易于管理并优化存储使用情况。压缩的 PDF 文件具有几个关键优势:降低存...

python散装笔记——131: 解压文件

为了提取或解压缩tarball(tar归档文件)、ZIP文件或gzip文件,Python分别提供了tarfile、zipfile和gzip模块。Python的tarfile模块提供了TarFile.e...

15《Python 办公自动化教程》文件压缩与解压缩

压缩包也是我们平时工作中经常要接触到的文件格式,压缩文件后缀名通常有 .zip、.rar、.7z 等等。Python 中也有专门用来操作压缩包文件的第三方模块 zipfile。听这个名字就知道是用来操...