2016-07-05 77 views
1

我是python的新手。現在我試圖學習如何編輯文本文件(覆蓋它們)。 所以,我有一個文本文件,其存儲這些整數就像這樣:python:編輯文本文件中的特定行。第一次編輯後文件沒有被讀取

1 
2 
3 
4 
5 

然後當我做這個

with open('badgeNumbers.txt', 'r') as f: 
    lines = f.readlines() 
    self.firstBadge = lines[0].strip() 
    self.secondBadge = lines[1].strip() 
    self.thirdBadge = lines[2].strip() 
    self.fourthBadge = lines[3].strip() 
    self.fifthBadge = lines[4].strip() 
    int(self.thirdBadge) 
    lines[2] = 56 
    out = open('badgeNumbers.txt', 'w') 
    out.writelines(str(lines)) 
    out.close() 

它的工作原理,並改變數。 在文本文件,其現在保存這樣的:

['1\n', '2\n', 56, '3\n', '4\n', '5'] 

不過,以後如果我想再次運行此,它給了我這個錯誤: self.secondBadge =行[1] .strip() IndexError :列表索引超出範圍

我只需要它能夠完成與第一次文本文件編輯之前相同的操作。 有人可以幫忙嗎? 謝謝

回答

1

第一個問題是56最後沒有新的一行。這意味着它和下一行將顯示在同一行上。第二個問題是,您將列表的字符串表示形式寫入一行,而不是將每個字符串寫入單獨行中的列表中。將lines[2] = 56更改爲lines[2] = "56\n",並將out.writelines(str(lines))更改爲out.writelines(lines)

+0

它工作正常!非常感謝! –