【发布时间】:2017-01-14 10:38:09
【问题描述】:
我将重新表述我之前所说的问题:
我目前正在尝试从大约 6 亿行的文件中仅读取大约 2600 万行。我目前有一个包含我感兴趣的 2600 万行的列表。
我的解决方法如下:
## list_ is a list of indices with the number of the 26MM rows
# First, open the output file where i want to copy the 26MM rows
with open(output_file,'w') as g:
# Open the source file with 600MM rows
with open(source_file,'r') as f:
for i,line in enumerate(f):
if i in list_:
g.write(line)
考虑到列表的大小和原始文件的大小,我担心处理这个文件可能需要很长时间。我知道其他问题已经涵盖了这个主题,但我认为其他帖子没有询问文本文件何时非常大。
感谢您并为之前令人困惑的帖子道歉,
【问题讨论】:
-
你尝试的时候发生了什么?
-
现在已经持续了几个小时。我只是想知道是否有更好的方法来做到这一点。我可能应该更好地描述我所面临的问题,并且在数百万次查找列表中的值时,这是我能想到的最好的方法。
-
尝试退后一步,描述实际问题。为什么你需要检查这个列表 6 亿次?元素是完全随机的还是有某种结构?几乎可以肯定,有更好的方法来满足您的需求。
-
鉴于您提供的信息很少,我唯一可以建议的是将 2600 万个项目列表转换为一个集合。检查一个项目是否在集合中应该更快。
-
对不起,伙计们,你是对的。让我重新表述问题以提供更多上下文。
标签: python