在搅拌机2.56中操作泡菜

时间:2011-02-27 14:04:00

标签: python-3.x blender-2.50

我正在使用pySerial从Arduino(微控制器)获取数据。

数据存储在pickle文件中。它在Blender 2.49(python 2.7)中运行良好。

现在,转移到Blender 2.56(python 3.2),我收到以下错误:

f=open('abc.dat','r')

with serial.Serial('COM31',9600) as port :
    for i in range(0, 10):
            x = port.read(size=1)
            print(int(x))
            y=pickle.load(f)
            f.close()
            f=open('abc.dat','w')
            y.append(i)                        
            pickle.dump(y,f)
            f.close()

port.close()

error:
Python script error from controller "Python Script#CONTR#1":
Traceback (most recent call last):
  File "256script1.py", line 18, in <module>
    f.close()
  File "C:\PROGRA~1\BLENDE~1\Blender\2.54\python\lib\pickle.py", line 1365, in l
oad
    encoding=encoding, errors=errors).load()
ValueError: read() from the underlying stream did notreturn bytes

Blender Game Engine Finished

使用pickle时是否有任何操作上的变化?

1 个答案:

答案 0 :(得分:1)

您以文本模式打开文件,但对于pickle,它应该处于二进制模式。在Python 2中,这并不重要(除了在Windows上),但在Python 3中它确实如此。

应该是

f=open('abc.dat','rb')