2016-07-05 1 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 : индекс списка за пределами допустимого диапазона

Мне просто нужно, чтобы он мог делать то же самое, что и перед редактированием первого текстового файла. Может ли кто-нибудь помочь? Thanks

ответ

1

Первая проблема заключается в том, что у 56 нет новой строки в конце. Это означает, что он и следующая строка будут отображаться в одной строке. Вторая проблема заключается в том, что вы записываете строковое представление списка на одну строку вместо того, чтобы писать каждую строку в списке по отдельным строкам. Изменить lines[2] = 56 на lines[2] = "56\n", а так же изменить out.writelines(str(lines)) на out.writelines(lines)

+0

Это сработало! Спасибо огромное! –

Смежные вопросы