Python:创建压缩的tar文件以进行流式写入

6

我需要生成tar.gz压缩的文本文件。有没有一种方法可以创建一个用于常量写入的文件(以便像 compressedFile.write("some text") 这样做),还是需要先创建原始文本文件,然后再进行压缩?

这将非常不幸,因为该文件应该非常长且易于压缩。


1
你是不是指的是一个经过 gzip 压缩的文件而不是 tar 文件? - GWW
我指的是 somefile.tar.gz,其中应该只有一个名为 somefile 的文件。 - Morse
2
看起来你不需要打包,因为只有一个文件。gzip就足够了。 - Dan Breen
1
这不是我设计用于输入生成文件的程序的输入格式,所以我确实需要tar :) - Morse
对于不需要打包gzip流的人,只需使用gzip模块:https://docs.python.org/2/library/gzip.html#module-gzip - nak
1个回答

6
这是一个关于如何从Python脚本中编写压缩的tar文件的示例:
import StringIO
import tarfile

tar = tarfile.open('example.tar.gz', 'w:gz')

# create a file record
data = StringIO.StringIO('this is some text')
info = tar.tarinfo()
info.name = 'foo.txt'
info.uname = 'pat'
info.gname = 'users'
info.size = data.len

# add the file to the tar and close it
tar.addfile(info, data)
tar.close()

结果:

% tar tvf example.tar.gz
-rw-r--r--  0 pat    users       17 Dec 31  1969 foo.txt

2
经过一些修改后,工作正常。首先:tar.tarinfo()无法使用,只能使用tar.TarInfo()(可能是Python版本太旧了)。第二个问题比较棘手:如果您对addfile进行修改,则需要在之前执行data.seek(0)。这真的是一个挑战才找到这个问题所在。谢谢! - Morse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接