2014-09-29 107 views
0

我是Python的新手,並且在這個問題上使用了搜索引擎優化(ALOT),但我沒有得到它的工作。 我試圖寫一個從Roborealm到Python的值,除了我不寫它的值,因爲它不支持str的問題。Python3.4'str'dons不支持緩衝區接口

這是我自己的代碼,我的代碼的其餘部分是從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搜索了很多,這是我最後的工作機會,請幫助我。

+1

您需要*字節*值,而不是字符串。但你**已經有一個字符串**。 – 2014-09-29 11:04:08

回答

0

rr.GetVariable("CirclesCount")正在返回一個str對象。你只需要指定"utf-8"編碼參數,如果你已編碼的字節,但因爲你得到一個解碼的海峽,所有你需要做的是:

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

或只是(哪個好):

Circles = rr.GetVariable("CirclesCount") 

下面是相關文檔:https://docs.python.org/3/library/stdtypes.html#str

+0

我已經嘗試了你說的兩種方式,但我仍然得到相同的錯誤代碼。我試過在Roborealms代碼中刪除'str',但後來我得到了錯誤。 TypeError:'str'對象不可調用 – 2014-09-29 11:45:52

+0

不調用'str()';除非有必要。 – jfs 2014-09-29 11:54:09

+0

@ J.F.Sebastian:是的。我包括str()版本來突出顯示2 str簽名。我編輯了我的答案表明,沒有str調用就更好。 – 2014-09-29 12:17:24

2

的問題是在C:\Users\RU21\Desktop\Röda puckar\Förbindelse med RR.py,不(僅)在你的代碼。

看着回溯,似乎Roborealm不支持Python 3.x.你應該安裝Python 2.7並嘗試agin。

+0

啊,對。我沒有正確讀取回溯。 – 2014-09-29 12:18:31

+0

THANKS ALOT,安裝了Python 2.7,我的代碼工作:) – 2014-09-29 12:46:39

相關問題