【发布时间】:2017-07-16 12:52:00
【问题描述】:
我有一个巨大的文本文件 (12GB)。这些行是制表符分隔的,第一列包含一个 ID。对于每个 ID,我都想做一些事情。因此,我的计划是从第一行开始,逐行遍历第一列,直到到达下一个ID。
start_line = b
num_lines = 377763316
while b < num_lines:
plasmid1 = linecache.getline("Result.txt", b-1)
plasmid1 = plasmid1.strip("\n")
plasmid1 = plasmid1.split("\t")
plasmid2 = linecache.getline("Result.txt", b)
plasmid2 = plasmid2.strip("\n")
plasmid2 = plasmid2.split("\t")
if not str(plasmid1[0]) == str(plasmid2[0]):
end_line = b
#do something
代码有效,但问题是 linecache 似乎每次都重新加载 txt 文件。如果我不提高性能,代码会运行几年。
如果您知道如何解决问题或知道替代方法,我非常感谢您的帮助!
谢谢, 菲利普
【问题讨论】:
-
行是制表符分隔的?听起来像我的专栏?
-
请显示所有代码。什么是
linecache -
linecache不是为此而设计的。来自源代码:“缓存 Python 源文件中的行”。是的,通过查看源代码linecache每次都会重新打开文件。 hg.python.org/cpython/file/3.6/Lib/linecache.py