AttributeError: 'tuple' object has no attribute 'write'

dhc picture dhc · Apr 17, 2012 · Viewed 38.1k times · Source

I have a homework assignment for a Python class and am running into an error that I don't understand. Running Python IDLE v3.2.2 on Windows 7.

Below is where the problem is happening:

#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

This is the error that I am getting:

Traceback (most recent call last): File "I:\Cent 110\test.py", line 19, in openfile.write(item+'\n')
AttributeError: 'tuple' object has no attribute 'write'

Answer

Matthias picture Matthias · Apr 17, 2012

You're missing the open.

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

And at the end there are missing parens when you try to close the file

openfile.close()

Edit: I just saw another problem.

openfile.write(str(cost)+'\n')