您打開文件以進行只寫(w
模式)並嘗試讀取它 - 這由for
語句完成。
即:在讀取文件時,使用for
語句對文件進行迭代。
如果您打算寫信給它,for
上的文件本身不能幫助您 - 只需使用帶有「範圍」的普通計數器並寫入即可。
with open("test.txt",'w') as f:
for i in range(desired_lines):
if (i == 2):
f.write(serial1 + "\n")
if (i == 3):
f.write(serial2 + "\n")
if (i == 4):
f.write(serial3 + "\n")
else:
f.write(line + "\n")
此外,writelines
應該當你有你想要寫, 每個INA單獨的行字符串列表中使用 - 玉不顯示你vaiables的內容給你想要的確切路線,但數字,它看起來像writelines
是不是你想要的。
(在一個側面說明 - 縮進小心 - 你應該IDENT你在Python輸入一個固定ammount的的foreach塊 - 這將有arbitrry identation像你這樣的工作,而不是通常在Python代碼)
更新 它看起來像你需要改變一些已經存在的文本文件的一些行。對此的最佳方法是重新創建另一個文件,替換所需的行,然後重命名所有內容。 (寫入文本文件幾乎是不可行的,因爲所有文本行必須與先前存在的行相同 - 並且在低級磁盤訪問中仍然不會獲得任何結果)。
import os
...
lines_to_change{
2: serial1,
3: serial2,
4: serial3,
}
with open("test.txt",'rt') as input_file, open("newfile.txt", "wt") as output_file:
for i, line in enumerate(input_file):
if i in lines_to_change:
output_file.write(lines_to_change[i] + '\n')
else:
output_file.write(line)
os.rename("test.txt", "test_old.txt")
os.rename("newfile.txt", "test.txt")
os.unlink("test_old.txt")
您使用'w',*只寫*模式打開文件。即使如此,即使您改變了這一點,也不會這樣做;你不能簡單地寫入文件的中間(至少沒有*覆蓋*其餘部分)。 – deceze
看到這個答案:http://stackoverflow.com/a/2081880/11208 –
我想你會希望'爲我,在任何情況下列舉(f)'。 – chepner