[英]Python web server error
我正在基于python的Web服务器上工作,但是我收到此错误消息。 我还是python新手,不确定我做错了什么! 我正在使用http://blog.scphillips.com/posts/2012/12/a-simple-python-webserver/作为参考。
Traceback (most recent call last): File "control.py", line 203, in <module>
app = TetheredDriveApp() File "control.py", line 77, in __init__
match = re.match('GET /api\?action=(\d|[A-Z]+)\sHTTP/1', req) File "/usr/lib/python3.2/re.py", line 156, in match
return _compile(pattern, flags).match(string) TypeError: can't use a string pattern on a bytes-like object
这是我的相关代码...
import socket
import re
def __init__(self):
host = ''
port = 61338
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((host, port))
sock.listen(1)
self.onConnect()
while True:
csock, caddr = sock.accept()
req = csock.recv(1024)
match = re.match('GET /api\?action=(\d|[A-Z]+)\sHTTP/1', req)
motionChange = False
if match:
action = match.group(1)
# KeyPress
if action == 'PP':
self.sendCommandASCII('128')
else:
csock.sendall("0")
csock.close()
我想这是正在发生的事情:当您从缓冲区接收输入时(在req = csock.recv(1024) # get the request, 1kB max
),它以字节的形式出现。 re
需要一个字符串。 尝试在行match = re.match('GET /move\\?a=(\\d+)\\sHTTP/1', req)
之前尝试req = str(req, encoding = 'utf-8')
行,然后看看如何远远超过了你。 如果这样不起作用,请尝试使用与utf-8不同的编码。
req = csock.recv(1024)
req = str(req, encoding='utf-8') # encoding may need to be changed
match = re.match('GET /api\?action=(\d|[A-Z]+)\sHTTP/1', req)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.