Python打包与解压zip

2023-05-16

打包

shutil模块

shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])
  • 参数说明:

    • base_name:创建的目标文件名,包括路径,减去任何特定格式的扩展
    • format:压缩格式,zip,tar,bztar或gztar中的一个
    • root_dir:打包时切换到的根路径。也就是说,开始打包时,会先执行路径切换,切换到root_dir所指定的路径,默认为当前路径。
    • base_dir:开始打包的路径。也就是说,该命令会对base_dir所指定的路径进行打包,默认值为root_dir,即打包切换后的当前目录。亦可指定某一特定子目录,从而实现打包的文件包含此统一的前缀路径
    • ownergroup为创建tar包时使用,默认为用户当前的owner和```group``
  • 使用示例

import os
import datetime
import shutil

base_name = os.path.dirname(os.path.realpath(__file__))
tmp_folder_name = "tmp-%s"%datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
db_folder = os.path.join(base_name, "..", "data", tmp_folder_name)
if not os.path.exists(db_folder):
    os.makedirs(db_folder)
    

zip_file_name = "project_%s_%s"%(projectid,  datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"))
shutil.make_archive(os.path.join(base_name, "..", "data", zip_file_name), 'zip', db_folder)

将db_folder的文件夹压缩成data下的以zip_file_name命名的压缩包。
压缩包

解压

Zipfile

ZipFile是主要的类,用来创建和读取zip文件
zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])

创建一个ZipFile对象,表示一个Zip文件。

  • 参数说明
    • file:文件路径或类文件对象
    • mode:打开zip文件的模式,默认为‘r’.
      表示读已经存在的zip文件,也可以用‘w’或者‘a’,‘w’表示新建一个zip文档或者覆盖一个已经存在的zip文档,‘a’表示将数据附加到一个现存的zip文档中。
    • compression表示写zip文档时使用的压缩方法,值可以是zipfile.ZIP_STORED或zipfile.ZIP_DEFLATED。
    • allowZIP64:如果文档大小超过2G,应该将allowZIP64设为TRUE。

ZipFile.namelist()

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

ZipFile.extract

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

将zip文档内的指定文件解压到当前目录。

  • 参数说明
    • member:要解压的文件名或者ZipInfo对象
    • path: 解析文件保存的文件夹
    • pwd:解压密码
  • 使用示例
def un_zip(file_name,upload_path):
    """unzip zip file"""
    zip_file = zipfile.ZipFile(os.path.join(upload_path,file_name))
    file_name_pre=file_name.split('.')[0]
    restore_path=os.path.join(upload_path,file_name_pre)

    if not os.path.exists(restore_path):
        os.makedirs(restore_path)
    for names in zip_file.namelist():
        zip_file.extract(names,restore_path)
    zip_file.close()
    return restore_path
  

解压

引用

  • shutil — High-level file operations
  • Python打包工具shutil.make_archive详解
  • python解压压缩包的几种方法
  • python解压压缩包的几种方法
  • Python模块学习:zipfile zip文件操作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python打包与解压zip 的相关文章

  • 无法“安装”plpython3u - postgresql

    我正在尝试在 postgresql 中使用 python 语言 像这样的事情 create or replace function test a integer returns integer as if a 2 0 return even
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐