从telnet输入
GET /learn/tutorials/351079-weekend-project-secure-your-system-with-port-knocking?name=MyName&married=not+single&male=yes HTTP/1.1 Host: merch1.localhost User-Agent: Mozilla/5.0 (Windows;en-GB; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en-gb,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive
如何将此输入输入列表.....?
我想要
a = ['GET /en/html/dummy.php?name=MyName&married=not+single&male=yes HTTP/1.1',
'Host: www.explainth.at',
'User-Agent: Mozilla/5.0 (Windows;en-GB; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11',
'Accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language: en-gb,en;q=0.5',
'Accept-Encoding: gzip,deflate',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7','Keep-Alive: 300']
这是从telnet收到的http请求。
我正在使用EchoProtocol(basic.LineReceiver)
。
答案 0 :(得分:1)
假设您从类似文本文件的对象f
(可能sys.stdin
,无论如何)获取这些文本行,list(f)
或f.readlines()
几乎你想要什么,除了每行末尾有行尾标记。 f.read().split('\n')
可能更接近您想要的内容(如果您将来自其他来源的文字作为字符串split
,则s
调用相同s.split('\n')
就是您的列表要)。
答案 1 :(得分:0)
如果您已阅读任何LineReceiver
文档,那么您应该已经看到所有收到的行都传递给该类的lineReceived
回调方法。所以你的问题的答案是一个看起来像这样的类:
from twisted.protocols.basic import LineReceiver
class LineCollector(LineReceiver):
def connectionMade(self):
self.lines = []
def lineReceived(self, line):
self.lines.append(line)
这为您提供了您所要求的内容 - 您在列表中的输入,每个条目一行。但是,你还不清楚为什么要这样做。如果您确实想要生成HTTP响应,那么这是错误的方法。