2011-02-27 88 views
1

我正在使用pySerial從Arduino(微控制器)獲取數據。攪拌機中泡菜的操作2.56

數據存儲在一個pickle文件中。它與Blender 2.49(python 2.7)很好地工作。

現在,轉移到Blender的2.56(蟒蛇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

你應該接受最好的回答你的問題。請接受一些答案。花時間回答問題真的很煩人,然後你什麼也得不到。 – 2011-02-27 21:08:17

+0

我真的很抱歉。但沒有意識到這樣的事情.. hw m我被派去做同樣的事情? – change 2011-03-01 14:20:13

+0

除了最佳答案之外,您還可以選中複選框。請閱讀常見問題。 http://stackoverflow.com/faq – 2011-03-04 13:02:40

回答

1

您可以在文本模式下打開文件,但對於醃菜它應該是二進制模式。在Python 2中,這並不重要(除了在Windows上),但在Python 3中它並不重要。

應該

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