2015-05-11 87 views
7

我們如何讀取一個文件(非阻塞)到stdout並打印到標準輸出(仍然非阻塞)?這是我能想到的最爲神祕的方式,但它讓你感覺必須有更好的方式。暴露某些LineReceiver的東西 - 比如逐行修改 - 功能將更加優選。讀取文件,扭曲

from twisted.internet import stdio, protocol 
from twisted.protocols.basic import FileSender 
from twisted.internet import reactor 

class FileReader(protocol.Protocol): 
    def connectionMade(self): 
     fl = open('myflie.txt', 'rb') 
     d = FileSender().beginFileTransfer(fl, self.transport) 
     d.addBoth(fl.close) 
     d.addBoth(lambda _: reactor.stop()) 

stdio.StandardIO(FileReader()) 
reactor.run() 
+0

我不知道在[扭曲](https://pypi.python.org/pypi/twisted)更好的方式 - 但這裏是它是如何在[線路]完成(HTTPS://pypi.python .ORG /的PyPI /電路) - [cat.py](https://github.com/circuits/circuits/blob/master/examples/cat.py) –

回答

3

這是扭曲的弱點。異步文件I/O很難完成,可能無法做到「正確」。有一張票已開放很長時間:https://twistedmatrix.com/trac/ticket/3983您可能會發現一個有用的地方繼續討論。

您使用成語肯定是最接近糾正我們目前提供。

+1

由於@Glyph。非常尊重Twisted。精彩而辛勤的工作。 – neverlastn