您可以使用 code.InteractiveConsole 和 SocketServer 将 python 交互式 shell 附加到套接字并通过它进行开发。一个简单的示例如下所示:
import sys
import SocketServer
from code import InteractiveConsole
class InteractiveServer(SocketServer.BaseRequestHandler):
def handle(self):
file = self.request.makefile(mode='rw')
shell = Shell(file)
try:
shell.interact()
except SystemExit:
pass
class Shell(InteractiveConsole):
def __init__(self, file):
self.file = sys.stdout = file
InteractiveConsole.__init__(self)
return
def write(self, data):
self.file.write(data)
self.file.flush()
def raw_input(self, prompt=""):
self.write(prompt)
return self.file.readline()
if __name__ == '__main__':
HOST, PORT = "127.0.0.1", 9999
server = SocketServer.TCPServer((HOST, PORT), InteractiveServer)
server.serve_forever()
一旦你启动并运行它,你就可以从另一个终端连接到端口 9999 并做你的事情。您可以在此屏幕截图 (PNG)中看到此功能
使用 InteractiveConsole 的基础知识取自这篇文章。我将它修改为与我正在从事的另一个项目的 SocketServer 一起使用。