python - 在 tar gzip 文件中逐行解析 gzip 日志文件

标签 python logfile-analysis

我的日志文件结构如下:

/var/log/2013-12-24.tar.gz

这个文件有:

2013-12-24/{00,01,02...23}.log.gz 

文件

我需要使用 Python 解析这些文件,

无需提取磁盘或内存中的任何文件

有什么建议吗?

最佳答案

这对于 .tar.gz 是不可能的,这就是原因。

为了创建.tar.gz 文件,您必须先tar 以创建单个.tar 文件,然后gzip 结果。

.tar 文件可以在不读取整个文件的情况下进行扫描,但它只有在 tar 存档的成员相对较大时才能正常工作。这是因为 tar 没有任何将所有成员列在一个紧凑位置的 header 。每个文件成员都有 512 字节的描述符,而不是显示下一个成员所在的位置。对于大型存档成员,您可以相对快速地在磁盘上找到任意成员内容,但您将不得不多次 lseek()

但是,一旦您在 .tar 之上应用 gzip,基本上就不可能快速获取存档的所有成员列表,更不用说实际获取了他们的内容未压缩。您被迫解压缩整个文件,甚至只是为了获得其所有成员的列表。

请注意,流行的 .tar.bz2.tar.xz 格式存在完全相同的问题。

您可以使用zip 格式修复它。 zip.tar.gz 有很大的优势,因为它确实有一个紧凑的索引,可以在一个地方列出所有存档成员,并且它允许快速读取该列表并仅提取文件您需要的,而无需提取(gunzip).tar.gz 遭受的整个存档。

关于python - 在 tar gzip 文件中逐行解析 gzip 日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16937391/

相关文章:

python - 将 Fortran 对象导入 Python

python - 我如何给变量自定义元数据?

python - 如何在 HTTPConnectionPool urllib3 中进行几次重定向后获取响应历史记录

r - R中的日志文件分析?

python - 使用 appcfg.py 时出现意外的关键字参数 "context"

python - 按属性总和列出的对象 block 列表

Android 设备的日志文件

vb.net - 解析带有空格的日志文件

R split() 函数大小增加问题