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 的相关文章

  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 如何在 Python 中解析和比较 ISO 8601 持续时间? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Python v2 库 它允许我解析和比较 ISO 8601 持续时间may处于不同单
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • Scipy Sparse:SciPy/NumPy 更新后出现奇异矩阵警告

    我的问题是由大型电阻器系统的节点分析产生的 我基本上是在设置一个大的稀疏矩阵A 我的解向量b 我正在尝试求解线性方程A x b 为了做到这一点 我正在使用scipy sparse linalg spsolve method 直到最近 一切都
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk

随机推荐