2005年11月09日 星期三 11:38
最近学习twisted的时候遇到一个问题,书里面给的例子运行在linux下面,通过fcntl来封装了一个stdio,这段代码在windows下面不能运行。 但是,书里面提到了可以用其他的有write的包来代替,不知道windows下面有没有相应的包呢? 我曾尝试将结果写道文件中,但是没有成功。 该代码在Twisted Network Programming Essentials的第二章第三节的example2-6。 下面附上程序: from twisted.internet import stdio, reactor, protocol from twisted.protocols import basic import re class DataForwardingProtocol(protocol.Protocol): def _ _init_ _(self): self.output = None self.normalizeNewlines = False def dataReceived(self, data): if self.normalizeNewlines: data = re.sub(r"(\r\n|\n)", "\r\n", data) if self.output: self.output.write(data) class StdioProxyProtocol(DataForwardingProtocol): def connectionMade(self): inputForwarder = DataForwardingProtocol( ) inputForwarder.output = self.transport inputForwarder.normalizeNewlines = True stdioWrapper = stdio.StandardIO(inputForwarder) self.output = stdioWrapper print "Connected to server. Press ctrl-C to close connection." class StdioProxyFactory(protocol.ClientFactory): protocol = StdioProxyProtocol def clientConnectionLost(self, transport, reason): reactor.stop( ) def clientConnectionFailed(self, transport, reason): print reason.getErrorMessage( ) reactor.stop( ) if __name__ == '_ _main_ _': import sys if not len(sys.argv) == 3: print "Usage: %s host port" % _ _file_ _ sys.exit(1) reactor.connectTCP(sys.argv[1], int(sys.argv[2]), StdioProxyFactory( )) reactor.run( )
2005年11月09日 星期三 12:08
sys.stdout对象有write方法。 On 11/9/05, 马踏飞燕 <honeyday.mj at gmail.com> wrote: > 最近学习twisted的时候遇到一个问题,书里面给的例子运行在linux下面,通过fcntl来封装了一个stdio,这段代码在windows下面不能运行。 > 但是,书里面提到了可以用其他的有write的包来代替,不知道windows下面有没有相应的包呢? > 我曾尝试将结果写道文件中,但是没有成功。 > 该代码在Twisted Network Programming Essentials的第二章第三节的example2-6。 > > 下面附上程序: > > from twisted.internet import stdio, reactor, protocol > > from twisted.protocols import basic > > import re > > > > class DataForwardingProtocol(protocol.Protocol): > > def _ _init_ _(self): > > self.output = None > > self.normalizeNewlines = False > > > > def dataReceived(self, data): > > if self.normalizeNewlines: > > data = re.sub(r"(\r\n|\n)", "\r\n", data) > > if self.output: > > self.output.write(data) > > > > class StdioProxyProtocol(DataForwardingProtocol): > > def connectionMade(self): > > inputForwarder = DataForwardingProtocol( ) > > inputForwarder.output = self.transport > > inputForwarder.normalizeNewlines = True > > stdioWrapper = stdio.StandardIO(inputForwarder) > > self.output = stdioWrapper > > print "Connected to server. Press ctrl-C to close connection." > > > > class StdioProxyFactory(protocol.ClientFactory): > > protocol = StdioProxyProtocol > > > > def clientConnectionLost(self, transport, reason): > > reactor.stop( ) > > > > def clientConnectionFailed(self, transport, reason): > > print reason.getErrorMessage( ) > > reactor.stop( ) > > > > if __name__ == '_ _main_ _': > > import sys > > if not len(sys.argv) == 3: > > print "Usage: %s host port" % _ _file_ _ > > sys.exit(1) > > > > reactor.connectTCP(sys.argv[1], int(sys.argv[2]), StdioProxyFactory( )) > > reactor.run( ) > > _______________________________________________ > Python中文技术讨论邮件列表 > 发言: 发邮件到 python-chinese at lists.python.cn > 订阅: 发送 subscribe 到 python-chinese-request at lists.python.cn > 退订: 发送 unsubscribe 到 python-chinese-request at lists.python.cn > 详细说明: http://python.cn/mailman/listinfo/python-chinese > > -- ■■■■■■■■■■■■■■■■■■■■■ Myblog: http://blog.donews.com/ygao/ 自建的python学习论坛: http://groups.google.com/group/python_study ■■■■■■■■■■■■■■■■■■■■■
2005年11月09日 星期三 12:55
在 05-11-9,马踏飞燕<honeyday.mj at gmail.com> 写道: > 但是,书里面提到了可以用其他的有write的包来代替,不知道windows下面有没有相应的包呢? import sys sys.stdout.write('Test,test\n') sys.stderr.write('Test stderr, stderr\n') -- I'm the one, powered by nEO
Zeuux © 2025
京ICP备05028076号