pyserial ser.write('string') TypeError in OS X
Diez B. Roggisch
deets at nospam.web.de
Tue Oct 20 17:38:02 EDT 2009
Rodrigo schrieb:
> Maybe this is not a bug at all, but i have installed python2.5. 3.01
> and 3.1.1. In python 2.5 ser. write('this is a string') works just
> fine.
> On the other hand, with 3.01 and 3.1.1 (pyserial 2.5 rc1) when i do a
> ser.write('this is a string') i get the following error"
>
>>>> import serial
>>>> ser = serial.Serial('/dev/tty.usbserial')
>>>> ser.write('this is a string')
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "/Library/Frameworks/Python.framework/Versions/3.1/lib/
> python3.1/site-packages/serial/serialposix.py", line 466, in write
> raise TypeError('expected %s or bytearray, got %s' % (bytes, type
> (data)))
> TypeError: expected <class 'bytes'> or bytearray, got <class 'str'>
>
> I honestly dont get what im doing wrong here
In Python3, the standard type for string-literals is not a byte-string,
but unicode. Thus you need to explicitly encode the passed value to a
bytes-object, as that's what is allowd for communicating with the
uoutside world.
ser.write('this is a string'.encode('utf-8'))
should do the trick.
The error-message is an abomination though...
Diez
More information about the Python-list
mailing list