2015-01-08 94 views
0

我需要处理100k行的输入(每行包含一个字符串)并在每行上执行一个函数。该函数将为每个字符串返回一个结果,并将其打印到控制台。 这样做的最好方法是什么?在python(100 k行)中处理大量输入的最佳方式是什么?

我现在的尝试是:

strings = [] 
for i in xrange(int(input())): 
    strings.append(raw_input()) 

更多的背景:我想解决的Hackerrank问题。输入可能看起来像这样(由Hackerrank提供): https://hr-testcases.s3.amazonaws.com/4187/input02.txt?AWSAccessKeyId=AKIAINGOTNJCTGAUP7NA&Expires=1420719780&Signature=iSzA93z7GKVIcn4NvdqAbbCOfMs%3D&response-content-type=text%2Fplain

+0

你应该告诉我们你阅读完后想要做什么。 – ErikR

+0

第一个问题,你应该在这里问自己:你真的需要内存中的所有数据**吗? – Sirko

+0

你想要一次在一个列表中存储10万行?你确定这是最有效的方法吗? – Katpoes

回答

2

您不需要将整个文件存储在内存中,因为您在读取文件时正在计算和打印结果。

因此,简单地读取文件中的行由行,做你的计算和打印结果:

with open('large-file.txt') as the_file: 
    for line in the_file: 
     result = do_something_with(line) 
     print(result) 
0

使用标准输入流,标准输入就像一个文件流

import sys 
for line in sys.stdin 
    do_work(line) 
+0

如何显示文件的结尾? – MJP

+0

当stdin接收到空字节时,这是由hackerrank输入自动完成的 – markcial

相关问题