Python 3 TypeError: str does not support the buffer interface
By:Roy.LiuLast updated:2019-08-17
Review a Python 2 socket example
whois.py
import sys import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("whois.arin.net", 43)) s.send(sys.argv[1] + "\r\n") #Python 2.7 send signature #socket.send(string[, flags])
If compile with Python 3, it prompts the following error?
Traceback (most recent call last): File "C:\repos\hc\whois\python\whois.py", line 6, in <module> s.send(sys.argv[1] + "\r\n") TypeError: 'str' does not support the buffer interface
Solution
In Python 3, the socket accepts bytes, you need to convert string to bytes with a encode() function like this :
whois.py
import sys import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("whois.arin.net", 43)) #convert string to bytes s.send((sys.argv[1] + "\r\n").encode()) #Python 3.4 send signature #socket.send(bytes[, flags])
P.S Tested with Python 3.4.3
References
From:一号门
COMMENTS