我目前正在尝试从大型文本文件中删除大多数行,并将所选信息重写为另一个。我必须逐行阅读原始文件,因为这些行出现的顺序是相关的。到目前为止,我能想到的最好的方法是只拉相关的行,并使用类似以下内容的方法重写它们:with open('input.txt', 'r') as input_file: with open('output.txt', 'w') as output_file: # We only have to loop through the large file once for line in input_file: # Looping through my data many times is OK as it only contains ~100 elements for stuff in data: # Search the line line_data = re.search(r"(match group a)|(match group b)", line) # Verify there is indeed a match to avoid raising an exception. # I found using try/except was negligibly slower here if line_data: if line_data.group(1): output_file.write('\n') elif line_data.group(2) == stuff: output_file.write('stuff') output_file.close() input_file.close()但是,使用〜1Gb文件和〜120,000条匹配的行,该程序仍需要花费约8个小时才能运行。我相信瓶颈可能涉及到正则表达式或输出位,因为完成此脚本所花费的时间与行匹配数成线性比例。我曾尝试先将输出数据存储在内存中,然后再将其写入新的文本文件,但快速测试表明它以与之前写入数据大致相同的速度存储数据。如果有帮助,我有一个Ryzen 5 1500和8Gb的2133 Mhz RAM。但是,我的RAM使用率似乎从未达到上限。
添加回答
举报
0/150
提交
取消