在我的主程序中,我在循環中調用一個腳本,該腳本作爲輸出將一行數據添加到txt文件。包含行號的最簡單方法是什麼?將行添加到文件時添加行號
這裏是我使用的代碼:
if area > 1000:
f = open(output_file, "a")
f.write("%s %s\n" % (a, b))
f.close
在我的主程序中,我在循環中調用一個腳本,該腳本作爲輸出將一行數據添加到txt文件。包含行號的最簡單方法是什麼?將行添加到文件時添加行號
這裏是我使用的代碼:
if area > 1000:
f = open(output_file, "a")
f.write("%s %s\n" % (a, b))
f.close
你首先需要計算已經在文件中的行數,增加與計數器新行前加:
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))
這是更簡單的方法;它讀取整個文件並計算行數。對於較大的文件,您必須在最後讀取一個塊才能找到最後一行,然後從最後一行解析最後一個計數器,以避免讀取整個文件。
你不應該打開輸出文件每次。至於櫃檯,你可以自己保留一個櫃檯。
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
我不得不每次打開輸出文件,因爲我有內存泄漏,這是避免它的最簡單方法。 –
實際上使用'with'要好得多,因爲它自己關閉文件。 –
您是指基於文件中已有行數的行號?你需要更清楚數字的來源。 –
是的,我的意思是。我想添加一個「計數器」,這樣當我添加一行到'output_file'時,這個值就是=寫入的行數+1。 –
其他行是否每個都有一個計數器? –