Python3.4' str'不支持缓冲区接口

时间:2014-09-29 11:03:31

标签: python string python-3.x

我是Python的新手,已经用Google搜索了这个问题并且我没有让它工作。 我正在尝试将一个从Roborealm写入Python的值,除了我没有把它写入值之外,一切都有效,因为它不支持str的问题。

这是我自己的代码,我的其余代码来自Roborealm:

rr = RR_API()
width = 0
height = 0
rr.Connect("localhost")
import math 
import socket
Clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Clientsocket.bind(("localhost", 4040))
serversocket = Clientsocket



#Circles
Circles = str(rr.GetVariable("CirclesCount"), "utf-8")
if Circles >=1:
  print ("Circles = "+rr.GetVariable("CIRCLES_COUNT"))

错误代码:

Traceback (most recent call last):
  File "C:\Users\RU21\Desktop\Röda puckar\Förbindelse med RR.py", line 281, in <module>
    Circles = str(rr.GetVariable("CirclesCount"), "utf-8")
  File "C:\Users\RU21\Desktop\Röda puckar\Förbindelse med RR.py", line 117, in GetVariable
    self.sock.send("<request><get_variable>"+str(name) +"</get_variable></request>")
TypeError: 'str' does not support the buffer interface

我是Python的新手,我用Google搜索了ALOT,这是我最后一次机会,所以请帮助我。

2 个答案:

答案 0 :(得分:2)

问题出在C:\Users\RU21\Desktop\Röda puckar\Förbindelse med RR.py,而不是(只)在您的代码中。

看看追溯,似乎Roborealm不支持Python 3.x.您应该安装Python 2.7并尝试使用agin。

答案 1 :(得分:0)

rr.GetVariable("CirclesCount")正在返回一个str对象。如果你有编码的字节,你只需要指定"utf-8"编码参数,但是因为你得到一个解码的str,所以你需要做的就是:

Circles = str(rr.GetVariable("CirclesCount"))

或只是(这是更好的):

Circles = rr.GetVariable("CirclesCount")

以下是相关文档:https://docs.python.org/3/library/stdtypes.html#str