【问题标题】:Is there a python library for line based file reading? [duplicate]是否有用于基于行的文件读取的 python 库? [复制]
【发布时间】:2012-02-08 07:04:18
【问题描述】:

可能重复:
Python: How to read huge text file into memory

要逐行处理一个大文本文件(1G+),需要任何行号的随机访问,最重要的是,不需要将整个文件内容加载到 RAM 中。有没有一个python库可以做到这一点?

在分析大型日志文件时很有用,只读就足够了。

如果没有这样的标准库,我只好寻找替代方法:找到一组函数/类,可以从一个大字符串对象返回第N行子字符串,这样我就可以mmap(是的,我的意思是内存映射文件对象)将文件映射到该对象,然后进行基于行的处理。

谢谢。

PS:一个日志文件几乎肯定有可变的行长。

【问题讨论】:

  • 所有行的长度都一样吗?
  • 您可以对文件进行预处理以创建各种索引吗?

标签: python line


【解决方案1】:

认为类似下面的方法可能会起作用,因为file object 的方法readline() 一次读取一行。如果行的长度是任意的,则需要如下索引位置。

lines = [0]
with open("testmat.txt") as f:
    while f.readline():
        lines.append(f.tell())
    # now you can read an arbitrary line:
    f.seek(lines[1235])
    line = f.readline()

如果行的长度相同,你可以这样做f.seek(linenumber*linelenght)

【讨论】:

  • 这看起来像@anijhaw 提到的“分类索引”。
猜你喜欢
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 1970-01-01
  • 2010-09-07
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多