【问题标题】:uncompressing tar.Z file with python?用python解压缩tar.Z文件?
【发布时间】:2010-02-16 10:41:33
【问题描述】:

我需要编写一个 python 脚本,从 FTP 服务器检索 tar.Z 文件,然后在 Windows 机器上解压缩它们。 tar.Z,如果我理解正确的话是 Unix 中 compress 命令的结果。

Python 似乎不知道如何处理这些,它不是 gz,也不是 bz2 或 zip。有谁知道可以处理这些的图书馆?

提前致谢

【问题讨论】:

标签: python tar compression


【解决方案1】:

如果 GZIP - 应用程序 - 可以处理它,您有两个选择。

  1. 试试 Python gzip 库。它可能会起作用。

  2. 使用subprocess Popen 为您运行gzip

它可能是一个 InstallShield .Z 文件。您可能想要使用 InstallShield 解压缩它并提取 .TAR 文件。同样,您可以使用subprocess Popen 来处理文件。

它也可能是“LZW 压缩文件”。看看这个库,它可能会有所帮助。

http://www.chilkatsoft.com/compression-python.asp

【讨论】:

    【解决方案2】:

    由于您针对特定平台(Windows),最简单的解决方案可能是在系统调用中运行 gzip:http://www.gzip.org/#exe

    您的项目中是否还有其他要求需要在 Python 中进行解压?

    【讨论】:

    • 嗯,有一整套用python编写的脚本,所以为了清楚起见,我宁愿把所有东西都用那种语言写。但是当然,如​​果没有其他方法,我可以接受任何可用的方法。我会在 windows 上试试 gzip,谢谢你的建议。
    【解决方案3】:

    不存在解压缩的普通 Python 模块,AFAIK,但只要有一些知识,构建一个模块是可行的:

    • .Z 格式标头规范
    • .Z 压缩格式

    几乎所有必要的信息都可以在the unarchiver CompressAlgorithm 找到。来自维基百科的关于adaptive LZWcompress man page 的附加信息。

    基本上,您读取前三个字节(前两个是魔术字节)来修改您的算法,然后开始读取和解压缩。

    有很多位摆弄(.Z 文件开始有 9 位标记,最多 16 位标记,然后将符号表重置为初始 256+2 值),您可能会处理二进制操作(&<<= 等)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多