AttributeError: объект «кортеж» не имеет атрибута «запись»

У меня есть домашнее задание для класса Python, и я сталкиваюсь с ошибкой, которую не понимаю. Запуск Python IDLE v3.2.2 в Windows 7.

Ниже показано, где возникает проблема:

#local variables
number=0
item=''
cost=''

#prompt user how many entries
number=int(input('\nHow many items to add?: '))

#open file
openfile=('test.txt','w')

#starts for loop to write new lines
for count in range(1,number+1):
    print('\nFor item #',count,'.',sep='')
    item=input('Name:  ')
    cost=float(input('Cost: $'))

    #write to file
    openfile.write(item+'\n')
    openfile.write(cost+'\n')

#Display message and closes file
print('Records written to test.txt.',sep='')
openfile.close

Это ошибка, которую я получаю:

Трассировка (последний последний вызов): файл «I:\Cent 110\test.py», строка 19, в openfile.write(item+'\n')
AttributeError: объект 'tuple' не имеет атрибута 'write'


person dhc    schedule 17.04.2012    source источник
comment
Вы должны проверить with оператор для открытия файлов - это означает, что вам не нужно закрывать их вручную, и они работают правильно даже в исключениях.   -  person Gareth Latty    schedule 17.04.2012


Ответы (1)


Вам не хватает open.

openfile = open('test.txt','w')

И в конце отсутствуют скобки при попытке закрыть файл

openfile.close()

Изменить: я только что увидел еще одну проблему.

openfile.write(str(cost)+'\n')
person Matthias    schedule 17.04.2012
comment
openfile=open('test.txt','w') есть. Спасибо :) - person dhc; 17.04.2012
comment
Спасибо, что заметили концевую скобку. Совсем пропустил. Однако это не решило мою проблему. :( - person dhc; 17.04.2012
comment
@dhc: вы упускаете открытие. Посмотрите еще раз на свой код. Это легко обнаружить — интерпретатор сообщает вам, в какой строке появляется ошибка. Все, что вам нужно сделать, это спросить себя, что такое openfile и почему у него нет атрибута write?. Для этого посмотрите (внимательно!) на то место, где вы определяете openfile. Вы увидите, что вам не хватает оператора open. - person Bryan Oakley; 17.04.2012