2016-07-05 53 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

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