python:使用zipfile操作ZIP文件

liftword3个月前 (03-03)技术文章23
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 16 文件压缩与解压

在日常工作中,我们经常需要对文件进行压缩和解压操作以减少存储空间或方便文件传输。今天,我们将学习如何使用 Python 进行文件的压缩与解压。1. 使用 zipfile 模块进行 ZIP 文件操作创建...

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

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

小明用Python暴力破解压缩文件zip密码,省了250块钱

那天晚上小明和你一样在某个小网站上搜寻某些私密的学习资料突然看到论坛有人提供了一个非常牛逼的资源小明怀着激动的心情下载了下来他怀着激动的心情打开了这个压缩文件看到就只有这么一个 txt 小明就是一顿双...

使用 Python 在 Excel 中插入、压缩、替换、提取和删除图像

Excel 不仅仅是一个数字和公式的工具;它还提供了用于处理图像的强大功能。无论您是创建报告、演示文稿还是数据可视化,合并图像都可以大大提高 Excel 项目的整体影响力和专业性。在 Excel 中...

Python 简单的解压缩算法

line = input().strip() need_ch = [] for i in range(len(line)): if line[i].isalpha(): if...