Python TypeError:执行open()时应为字符缓冲区对象
所以我在学习Python。我用数组和open()做了一件简单的事情,这段代码有时有效,有时无效!请帮忙Python TypeError:执行open()时应为字符缓冲区对象,python,compiler-errors,Python,Compiler Errors,所以我在学习Python。我用数组和open()做了一件简单的事情,这段代码有时有效,有时无效!请帮忙 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,
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()
它给了我这个:
Traceback (most recent call last):
File "Screen.py", line 35, in <module>
fout.write(myArr)
TypeError: expected a character buffer object
回溯(最近一次呼叫最后一次):
文件“Screen.py”,第35行,在
fout.write(myArr)
TypeError:应为字符缓冲区对象
请帮忙 这是因为该方法需要一个字符串作为第一个参数,但您正在向它传递一个数组。我猜想,当您测试代码并输入
'n'
时,会出现此错误,但当您输入'y'
时,它工作正常。这是因为以下几行:
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()
if load == "n":
myArr = [0, 0, 0,
0, 0, 0,
0, 0, 0]
这使得myArr
成为列表
。我们不能简单地将列表写入文件。必须首先将其转换为字符串(只有字符串才能写入文件)
因此,根据您希望在文件中存储此列表的方式,您可以执行以下操作:
fout = open("myArr.bat", "w")
fout.write(' '.join(map(str, myArr)))
fout.close()
这实际上会将以下行写入myArr.bat
(假设myArr=[0,0,0,0,0,0,0]
):
希望这有帮助嗯。。。那么,我该如何取回它呢?我能想到的唯一方法是:
fin=open(“myArr.bat”,“r”)myArr[0]=fin.readline(1)
,但这行不通。。。因为你有那些空间。但是如果我删除空格,那么你会遇到两位数的问题。。。我该怎么做呢?myArr=map(int,open(“myArr.bat”).readline().strip().split())
如果在open
中未指定“r”
,则将“r”
用作默认模式谢谢!这非常有帮助!那么如何作为字符串传递,以及以后如何检索它?谢谢你的帮助@PlazmotechBinary,如果要将数组中的序列化数据存储在文件中,然后读取该文件并取消序列化,请使用。