是否有基于行文件读取的python库?

时间:2012-02-08 07:04:18

标签: python line

  

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

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

分析大型日志文件时,只读即可。

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

谢谢。

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

1 个答案:

答案 0 :(得分: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)