用Python解压tar.Z文件?

1 投票
3 回答
3569 浏览
提问于 2025-04-15 19:20

我需要写一个Python脚本,从FTP服务器上下载tar.Z文件,并在Windows电脑上解压这些文件。tar.Z文件,如果我没理解错的话,是Unix系统中用compress命令生成的。

Python好像不知道怎么处理这些文件,因为它既不是gz格式,也不是bz2或zip格式。有没有人知道有什么库可以处理这些文件呢?

提前谢谢大家!

3 个回答

0

因为你是针对特定的平台(Windows),最简单的解决办法可能就是通过系统调用来运行gzip:http://www.gzip.org/#exe

在你的项目中,还有其他要求吗?比如解压缩一定要用Python来完成?

0

据我所知,目前没有一个简单的Python模块可以直接解压缩.Z格式的文件,但其实是可以自己做一个,只要你有一些相关知识:

  • .Z格式的头部规范
  • .Z压缩格式

几乎所有需要的信息都可以在这个解压工具的压缩算法页面找到。你还可以在维基百科上查找关于自适应LZW算法的额外信息,或者看看压缩命令的手册

基本上,你需要先读取文件的前三个字节(前两个字节是魔数,用来标识文件类型),然后就可以开始读取和解压缩了。

在这个过程中,你会涉及到很多位操作(.Z文件开始时使用9位的标记,最多可以到16位,然后会重置符号表回到最初的256+2个值),这可能需要你进行一些二进制运算,比如使用&<<=等操作。

1

如果GZIP这个应用程序能处理这个文件,你有两个选择。

  1. 试试Python的gzip库。可能会有效果。

  2. subprocess Popen来帮你运行gzip

这个文件可能是一个InstallShield的.Z文件。你可能需要用InstallShield来解压它,提取出.TAR文件。同样,你也可以用subprocess Popen来处理这个文件。

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

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

撰写回答