Python工具箱系列(四十一)

这篇具有很好参考价值的文章主要介绍了Python工具箱系列(四十一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用zip批量压缩文件

       前文的代码示例了使用gzip对单个文件进行压缩。本文示例使用更通用的zipfile来批量压缩文件。zipfile也是python内置的库,使用起来非常方便。废话不说,直接上代码示例。

import dbm
import glob
import zipfile

# 保存压缩计划的库名
dbname = 'plan'

def writeplan():
    # 设置要压缩的文件名后缀以及目录名
    with dbm.open(dbname,'n') as db:
        db[r'd:\dev\gotoolkits\markdown'] = '*.md'
        db[r'd:\dev\gotoolkits\python'] = '*.py'
        

def genzipfile(zipfilename):
    """
    将要压缩的文件保存在一个zipfile中。

    Args:
        zipfilename (string): 压缩文件名
    """
    zipcontainer = zipfile.ZipFile(zipfilename, 'w', zipfile.ZIP_DEFLATED )
    
    # 获得目录与后缀名
    with dbm.open(dbname,'r') as db:
        for startdir in db.keys():
            filefilter = db[startdir]

            # 在指定目录下进行文件过滤
            regstr = f"{startdir.decode('utf-8')}\\{filefilter.decode('utf-8')}"
            files = glob.iglob(regstr)
            for file in files:
                # 将文件放入压缩文件中
                zipcontainer.write(file)
    
    # 详细输出
    print(zipcontainer.infolist())
    
    zipcontainer.close()
    print('done')
        
writeplan()
genzipfile(r'd:\dev\demo.zip')

       上述示例代码中,再次引入一个python内置的轻量级数据库dbm。与shelve类似,也是key-value数据库。它的特殊性在于无论是键还是值,都必须是字符串,但使用起来非常方便。虽然在示例代码中对此数据库是先写后读,但在实际批量压缩备份的应用场景中,应该是一次性配置好后,后续就是定期调用genzipfile不断的生成压缩文件。

         在genzipfile函数中,使用了glob.iglob来搜索特定后缀的文件。这个函数无法搜索子目录,但对指定目录下的文件搜索有效,类似于命令中的“ls *.py”。

        zipfile.infolist()能够详细的输出压缩文件中的所有文件信息。在此基础上做GUI界面时,可以依托此信息生成目录树。

        生成的zip文件,其它工具类软件也能够使用,以下使用Bandizip这个windows工具软件打开,显示效果如下:Python工具箱系列(四十一),python系列,python,开发语言

 

需要注意的是:

一、zipfile当前不支持创建一个加密的zip文件

二、zipfile能够解开加密的文件,但非常慢文章来源地址https://www.toymoban.com/news/detail-679877.html

到了这里,关于Python工具箱系列(四十一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python工具箱系列(三十三)

    Timescaledb 在物联网时代,出现了大量以时间为中心海量产生的传感器数据,称为时序数据。这类数据的特点是: 数据记录总有一个时间戳。 数据几乎总是追加,不更新也不删除。 大量使用近期的数据。很少更新或者回填时间间隔的缺失数据。 与时间间隔频率关系不大。但累

    2024年02月06日
    浏览(60)
  • Python工具箱系列(三十六)

    基于Docker的数据库开发环境 前文介绍了sqlite/mysql/mssql等数据库系统在ubuntu的安装与部署过程,相对是比较复杂的,需要耐心等待下载以及排除各种故障,对于开发人员来说是不太友好。在某些情况下,开发人员要测试在多个数据库环境下软件的正确性,需要部署多个数据库,

    2024年02月09日
    浏览(49)
  • Python工具箱系列(三十二)

    Elasticsearch是一个基于Lucene的搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful 的API接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是非常流行的企业级搜索引擎。官方支持的客户端语言包括Java、.NET(C#)、PHP、Python、Apa

    2024年02月05日
    浏览(52)
  • Python工具箱系列(三十四)

    SQLAlchemy是著名的ORM(Object Relational Mapping-对象关系映射)框架。其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来。对许多语言(例如JAVA/PYTHON)来说就是定义一个对象,并且这个对象对应着一张数据库的表。而这个对象的实例,就对应着表中的一条记录。

    2024年02月06日
    浏览(52)
  • python实现视频抽帧,文件批量操作,文件批量处理(数据集制作的工具箱)

    环境准备 数据集制作 文件批量重命名 文件批量移动 将文件批量按照一定格式进行重命名 修改xml文件内容的方法 Pathlib库的常用接口 在计算机视觉项目中,文件批量操作和文件批量预处理是必不可少的步骤。它们涉及处理大量的图像文件,包括读取、处理、保存和预处理。

    2024年02月09日
    浏览(72)
  • IDEA插件系列(4):GitToolBox插件——git工具箱

    GitToolBox 提供各种git操作。 第一种安装方式是使用IDEA下载安装 第二种安装方式是使用离线插件进行安装 插件下载地址:http://plugins.jetbrains.com/plugin/7499-gittoolbox 在这里进行配置 更多可参考文档 https://github.com/zielu/GitToolBox/wiki/Manual 作用:显示当前代码提交的用户名、时间、以

    2024年02月11日
    浏览(42)
  • HNU-离散数学-工具箱系列3-关系矩阵法求传递闭包

    用于解决这类问题: 举例一、  举例二、(求传递闭包)   代码如下:

    2024年02月11日
    浏览(50)
  • Qt应用开发(基础篇)——工具箱 QToolBox

            QToolBox类继承于QFrame,QFrame继承于QWidget,是Qt常用的基础工具部件。         框架类QFrame介绍         QToolBox工具箱类提供了一列选项卡窗口,当前项显示在当前选项卡下面,适用于 分类浏览 、 内容展示 、 操作指引 这一类的使用场景。 1、count        

    2024年02月13日
    浏览(100)
  • 充实你的Android开发工具箱:无效数据处理的方案

    😄😄个人介绍 光子郎.进行开发工作七年以上,目前涉及全栈领域并进行开发。会经常跟小伙伴分享前沿技术知识,java后台、web前端、移动端(Android,uniapp, 小程序 )相关的知识以及经验体会,不定期会有源码及框架的分享,如果你有相关的知识想要及时了解或者讨论,

    2024年02月06日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包