将文本写入.tar.gz文件的Python代码

4
我想寻找一种用Python直接在.tar.gz文件中编写文本文件(即时生成)的方法。最好的解决方案是像fobj = open (arg.file, "a")这样的代码来追加文本内容。
我希望使用这个功能来处理不允许分割的长日志文件。
提前感谢您的帮助。

你想直接放置文本文件吗?tar.gz不是文本文件。你想把.txt文件放在.tar.gz归档文件中吗? - Andersson
抱歉造成误解。是的,我指的就是这个。直接意味着即时生成。 - FrankStein
1个回答

4

是的,这是可能的,但很可能不是你想要使用它的方式。

.tar.gz实际上是两个东西:gzgzip用于压缩,但此工具只能压缩单个文件,因此如果您想将多个文件压缩到一个压缩归档文件中,则需要先将这些文件合并。这就是tar所做的事情,它将多个文件连接到一个存档文件中。

如果您有一个单独的长日志文件,只需gzip它会更容易。为此,Python有gzip模块,您可以直接写入压缩文件:

import gzip
with gzip.open('logfile.gz', 'a') as log:
    # Needs to be a bytestring in Python 3
    log.write(b"I'm a log message.\n")

如果你需要写入一个tar归档文件,可以使用Python的tarfile模块。然而,该模块不支持向文件中添加内容(模式'a'),因此tar文件可能不是记录日志的最佳解决方案。

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