2012-06-28 3 views
0

Я пытаюсь прочитать последнюю строку из текстового файла. Каждая строка начинается с номера, поэтому в следующий раз что-то вставляется, новый номер будет увеличиваться на 1.Преобразование/объединение целых чисел в strying с помощью python

Например, это будет типичный файл

1. Something here   date 
2. Something else here  date 
#next entry would be "3. something date" 

Если файл пуст I может ввести запись без проблем. Однако, когда уже есть записи я получаю следующее сообщение об ошибке

LastItemNum = lineList[-1][0:1] +1 #finds the last item's number 
TypeError: cannon concatenate 'str' and 'int objects 

Вот мой код функции

def AddToDo(self): 
    FILE = open(ToDo.filename,"a+") #open file for appending and reading 
    FileLines = FILE.readlines() #read the lines in the file 
    if os.path.getsize("EnteredInfo.dat") == 0: #if there is nothing, set the number to 1 
     LastItemNum = "1" 
    else: 
     LastItemNum = FileLines[-1][0:1] + 1 #finds the last items number 
    FILE.writelines(LastItemNum + ". " + self.Info + "  " + str(datetime.datetime.now()) + '\n') 
    FILE.close() 

Я попытался преобразовать LastItemNum в строку, но я получаю то же самое «не могу сцепить» ошибка ,

+0

Возможный дубликат [Выполнение строки из строки и целого числа в Python] (http://stackoverflow.com/questions/2823211/making-a-string-out-of-a-string-and-an -integer-in-python) –

+0

@HansEngel: Это противоположная проблема. –

+0

Agh, игнорируйте меня. :) –

ответ

5
LastItemNum = int(lineList[-1][0:1]) +1 

тогда вы, чтобы преобразовать LastItemNum обратно в строку перед записью в файл, используя:

LastItemNum=str(LastItemNum) или вместо этого вы можете использовать строку форматирования.

+0

Редактировать - Работал отлично. Благодаря! – user1104854

+0

использовать 'str (LastItemNum)' inside 'writelines()', потому что 'LastItemNum' является' int'. –

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