我想写一个(最好是python)脚本来修改gzip压缩文件中一个文件的内容。该脚本必须在FreeBSD 6 +上运行。
基本上,我需要:
我会为很多文件重复这个。
Python的tarfile
模块似乎无法在压缩时打开tar文件进行读/写访问,这具有一定的意义。但是,我无法找到一种方法来修改tar文件。
有一种简单的方法吗?
答案 0 :(得分:5)
不要将tar文件视为可以读/写的数据库 - 事实并非如此。 tar文件是文件的串联。要修改中间的文件,您需要重写文件的其余部分。 (对于特定大小的文件,您可能可以利用块填充)
您要做的是按文件处理tarball文件,将文件(带有修改)复制到新的tarball中。 Python tarfile模块应该可以轻松完成。您应该能够通过将属性从旧的TarInfo对象复制到新的对象来保留属性。
答案 1 :(得分:1)
我没有看到删除单个文件的简单方法。您可以轻松提取一个或全部,然后添加所需的任何文件。
我认为唯一的方法是:
在重新创建
时阅读时,请务必重置正确的格式tarfile.USTAR_FORMAT POSIX.1-1988(ustar)格式。 tarfile.GNU_FORMAT GNU tar格式。 tarfile.PAX_FORMAT POSIX.1-2001(pax)格式。 tarfile.DEFAULT_FORMAT