如何跳转到一个巨大的文本文件中的特定行?以下代码是否有其他替代方法:startFromLine = 141978 # or whatever line I need to jump tourlsfile = open(filename, "rb", 0)linesCounter = 1for line in urlsfile:
if linesCounter > startFromLine:
DoSomethingWithThisLine(line)
linesCounter += 1如果我正在(~15MB)使用未知但不同长度的行处理一个巨大的文本文件,并且需要跳转到我事先知道的特定行?当我知道我至少可以忽略文件的前半部分时,我会逐个处理它们。寻找更优雅的解决方案,如果有的话。
3 回答

qq_笑_17
TA贡献1818条经验 获得超7个赞
inecache:
该
linecache
模块允许从Python源文件获取任何行,同时尝试使用缓存在内部进行优化,这是从单个文件中读取许多行的常见情况。traceback
模块使用它来检索源行以包含在格式化的回溯中...

慕勒3428872
TA贡献1848条经验 获得超6个赞
如果线条的长度不同,你真的没有那么多的选项...你可能需要处理行结束字符以了解你何时进展到下一行。
但是,您可以通过将最后一个参数更改为“打开”到非0的值来显着加快速度并减少内存使用量。
0表示文件读取操作是无缓冲的,这非常慢并且磁盘密集。1表示文件是行缓冲的,这将是一种改进。大于1的任何东西(比如8k ......即:8096或更高)将文件的块读取到内存中。你仍然可以访问它for line in open(etc):
,但是python一次只能进行一些操作,在处理后丢弃每个缓冲的块。
添加回答
举报
0/150
提交
取消