【问题标题】:Re-compression Office Open XML files in python?在 python 中重新压缩 Office Open XML 文件?
【发布时间】:2017-09-09 04:20:58
【问题描述】:

我正在编写一个快速应用程序来使用 python 编辑 Office 文件,但是一旦我完成后我似乎找不到重新打包它们的好方法。 OOXML 是一个很好的库,但它是为解压缩和探索它们而量身定制的,同样,Powershell 和 Open XML API 都提供压缩功能,但在 Python 中不提供。

我试图避免使用 C 类型(如果可以的话,我想在 Linux 上运行它)但是默认的 zipfile 模块不能用于重建应用程序。

我缺少一些可用于通用 python 的库或算法吗?

【问题讨论】:

  • “不可接受”如何?也就是说——你是如何尝试使用 zipfile 模块的,它是如何失败的?
  • 我应该更清楚一点,我的意思是 Office 无法识别重新压缩的文件。 Laurent 的回答已经足够接近我所需要的了
  • 如果您向我们展示了您尝试用来重新生成文件的实际代码,我们可能已经能够尝试重现该行为。事实上,有人给了你不同的代码,但因为我们不知道你的原始代码是什么,所以我们只能推测行为有何不同。

标签: python xml ms-office openxml


【解决方案1】:

您可以使用shutil.make_archive 来压缩您的目录:

>>> from shutil import make_archive
>>> import os
>>> archive_name = os.path.expanduser(os.path.join('~', 'myarchive'))
>>> root_dir = os.path.expanduser(os.path.join('~', '.ssh'))
>>> make_archive(archive_name, 'gztar', root_dir)
'/Users/tarek/myarchive.tar.gz'

【讨论】:

  • 这几乎做到了; fyi gztar 导致文件无法被办公室识别或打开,但如果我使用“zip”而不是“gztar”,它会起作用。不知道为什么这与 zipfile 不同,但是很好
  • shutil.make_archive()zip 在可用时使用 zipfile。因此,如果您拥有一个 zipfile 模块,并且 make_archive() 能够创建一个好的 zip 文件,那么 zipfile 模块显然能够创建一个适用于您的用途的 ZIP 文件。正确。
猜你喜欢
  • 2011-06-24
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
相关资源
最近更新 更多