2014-03-03 92 views
0

在我的主程序中,我在循環中調用一個腳本,該腳本作爲輸出將一行數據添加到txt文件。包含行號的最簡單方法是什麼?將行添加到文件時添加行號

這裏是我使用的代碼:

if area > 1000: 
     f = open(output_file, "a") 
     f.write("%s %s\n" % (a, b)) 
     f.close 
+0

您是指基於文件中已有行數的行號?你需要更清楚數字的來源。 –

+0

是的,我的意思是。我想添加一個「計數器」,這樣當我添加一行到'output_file'時,這個值就是=寫入的行數+1。 –

+0

其他行是否每個都有一個計數器? –

回答

0

你首先需要計算已經在文件中的行數,增加與計數器新行前加:

if area > 1000: 
    with open(output_file, "r+") as f: 
     linecount = sum(1 for _ in output_file) 
     f.write("%s %s %s\n" % (linecount + 1, a, b)) 

這是更簡單的方法;它讀取整個文件並計算行數。對於較大的文件,您必須在最後讀取一個塊才能找到最後一行,然後從最後一行解析最後一個計數器,以避免讀取整個文件。

0

你不應該打開輸出文件每次。至於櫃檯,你可以自己保留一個櫃檯。

with open(input_file, 'r') as i, open(output_file, 'w') as o: 
    count = 1 
    for line in i: 
     # do some computation 
     if area > 1000: 
      o.write('%d: %s %s\n' %(count, a, b)) 
      count += 1 
+0

我不得不每次打開輸出文件,因爲我有內存泄漏,這是避免它的最簡單方法。 –

+0

實際上使用'with'要好得多,因爲它自己關閉文件。 –