To preface I’m very new to python (about 7 days) but I’m an experienced software eng undergrad.
I would like to send data between machines running python scripts. The idea I had (in order to simplify things) was to concatenate the data (strings & ints) into a string and do the parsing client-side.
The UDP packets send beautifully with simple strings but when I try to send useful data python always complains about the data I send; specifically python won’t let me concatenate tuples.
- In order to parse the data on the client I need to seperate the data with a dash character: ‘-‘.
-
nodeList is of type dictionary where the key is a string and value is a double.
randKey = random.choice( nodeList.keys() ) data = str(randKey) +'-'+ str(nodeList[randKey]) mySocket.sendto ( data , address )
The code above produces the following error:
TypeError: coercing to Unicode: need string or buffer, tuple found
I don’t understand why it thinks it is a tuple I am trying to concatenate…
So my question is how can I correct this to keep Python happy, or can someone suggest I better way of sending the data?
Thank you in advance.
I highly suggest using Google Protocol Buffers as implemented in Python as protobuf for this as it will handle the serialization on both ends of the line. It has Python bindings that will allow you to easily use it with your existing Python program.
Using your example code you would create a
.protofile like so:Then after generating, you can use it like so: