2015-01-08 134 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

相關問題