So I'm learning Python. I was doing a simple thing with arrays and open(), and sometimes this code works, and sometimes it doesn't! Please help!
print('Load? (Y/N)')
load = raw_input()
if load == "y":
fin = open("myArr.bat", "r")
myArr = fin.readline()
if load == "n":
myArr = [0, 0, 0,
0, 0, 0,
0, 0, 0]
if load != "y" and load != "n":
print 'WUT?'
exit()
print (myArr[0]) , '|' , (myArr[1]) , '|' , (myArr [2])
print '----------'
print (myArr[3]) , '|' , (myArr[4]) , '|' , (myArr [5])
print '----------'
print (myArr[6]) , '|' , (myArr[7]) , '|' , (myArr [8])
print '_______________________________________________'
print 'What shall I change?'
print 'Number in array: '
foo = raw_input()
doo = int(float(foo))
print 'Number to change to: '
bar = raw_input()
dar = int(float(bar))
myArr[doo] = dar
print '_______________________________________________'
print (myArr[0]) , '|' , (myArr[1]) , '|' , (myArr [2])
print '----------'
print (myArr[3]) , '|' , (myArr[4]) , '|' , (myArr [5])
print '----------'
print (myArr[6]) , '|' , (myArr[7]) , '|' , (myArr [8])
fout = open("myArr.bat", "w")
fout.write(myArr)
fout.close()
Its giving me this :
Traceback (most recent call last):
File "Screen.py", line 35, in <module>
fout.write(myArr)
TypeError: expected a character buffer object
Please help!
That's because the write
method expects a string as the first argument, but you're passing it an array.
I'm going to guess that you get this error when you test your code and input 'n'
, but when you input 'y'
, it works just fine. This is because of these lines:
if load == "n":
myArr = [0, 0, 0,
0, 0, 0,
0, 0, 0]
This makes myArr
a list
. One does not simply write a list to a file. You must convert it into a string first (only strings can be written to files).
So depending on how you want to store this list in your file, you could do this:
fout = open("myArr.bat", "w")
fout.write(' '.join(map(str, myArr)))
fout.close()
This would essentially write the following line to myArr.bat
(assuming myArr = [0, 0, 0, 0, 0, 0, 0, 0, 0]
):
0 0 0 0 0 0 0 0 0
Hope this helps
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With