2017-03-13 65 views
1

我有一個txt文件,大約20000行。我必須處理每一行並執行一些處理,比如替換一些特殊字符串,然後將內容寫入新的txt。 現在我的處理方式是將內容保存到列表original_list.After過程中,我得到一個新的列表process_list。 寫入文件:寫多行的高效方法?

with open('new.txt','w') as f1, 
    for eachline in process_list: 
     f1.write(eachline) 

我認爲這是寫在每行一個文件一個非常緩慢的方式。所以我想知道有效的方法。喜歡每次寫5000行?我猜。

+4

你爲什麼認爲這很慢?該文件僅打開一次並具有緩衝輸出,因此您不控制它何時寫入磁盤。 – AChampion

+0

我只是猜測它會消耗更多的內存來調用每行寫入文件的I/O.我的朋友建議我每次寫入5000行。 –

+0

@EvanZhang除非你已經有速度問題,不需要預先優化 – jamylak

回答

1

這樣做的典型方法是如下:

with open('inFile.txt') as fIn: 
    with open('outFile.txt', 'w') as fOut: 
     for line in fIn: 
      fOut.write(process(line)) 

這將創建一個迭代器,速度快,被認爲是最好的做法。你在做一個塊式操作嗎?看起來你正在進行線上操作,以上就足夠了......

+0

我認爲這個迭代器很好。我不需要創建列表,我可以在迭代器中執行行操作。 –

+0

處理完所有行後,使用'/ n'連接每行,並且每次寫入5000行,如str_output ='line1 \ n'+'line2 \ n + ..'line5000 \ n'。然後將這個非常長的字符串寫入文件。它有效嗎? –

+0

我不這麼認爲。我沒有任何數據可以支持這一點,但Python的典型實現會在您使用迭代器時自動爲您在後臺執行此操作。 – ssm