【问题标题】:Operation of pickle in Blender 2.56Blender 2.56中pickle的操作
【发布时间】:2011-02-27 14:04:00
【问题描述】:

我正在使用 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的使用是否有操作上的变化?

【问题讨论】:

  • 您应该接受对您的问题的最佳回答。请接受一些答案。花时间回答问题却一无所获真的很烦人。
  • 我真的很抱歉。但不知道这样的事情..我应该做同样的事情吗?
  • 您选择最佳答案旁边的复选框。请阅读常见问题解答。 stackoverflow.com/faq

标签: python-3.x blender-2.50


【解决方案1】:

您以文本模式打开文件,但对于泡菜,它应该是二进制模式。在 Python 2 中这无关紧要(在 Windows 上除外),但在 Python 3 中确实如此。

应该是

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

【讨论】:

    猜你喜欢
    • 2017-11-20
    • 2012-12-29
    • 2021-05-08
    • 1970-01-01
    • 2022-10-07
    • 2016-02-24
    • 2020-01-16
    • 2012-07-15
    • 2012-07-02
    相关资源
    最近更新 更多