繁体   English   中英

循环读取文件中的特定行(优化)

[英]Reading specific lines from a file in a loop (optimization)

我正在从文本文件中读取特定行。 这是我的代码:

file.seek(0)
for j, ln in enumerate(file):
   if j == line_number
      line = ln   # i'm getting the line
      break

我在“循环”中使用此代码花费很长时间 ,其中“ line_number”每转都是随机的。 我也尝试过linecache.getline(),但是每回合都需要调用linecache.clearcache(),所以它并不更好。

有更快的解决方案吗? 记忆无所谓。

如果内存真的没关系:

lines = file.readlines()

line = lines[line_number]

您一次读取文件,将其存储在内存中,然后从那里访问它。

编辑:内存很重要:

from itertools import dropwhile

line = next(dropwhile(lambda x: x[0]==line_number, enumerate(file)))[1]

我们可以使用itertools.dropwhile()忽略这些行,直到获得所需的行。

在循环上方使用此命令:

with open('in.txt') as f:
 lines=[ln for ln in f]

现在访问循环内的任何行号:

lines[line_number]
def getLine(fileObj, lineNo):
    [fileObj.readline() for i in xrange(lineNo - 1)]
    return fileObj.readline()

其他方式

import linecache
linecache.getline('myfile', line_number)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM