繁体   English   中英

Python Web服务器错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM