Python 使用twisted将文件读取到标准输出

Python 使用twisted将文件读取到标准输出,python,asynchronous,twisted,Python,Asynchronous,Twisted,如何读取文件(非阻塞)并将其打印到标准输出(仍然是非阻塞)?这是我能想到的最简单的方法,但它让你觉得一定有更好的方法。更可取的做法是使用一些类似LineReceiver的逐行修改功能 from twisted.internet import stdio, protocol from twisted.protocols.basic import FileSender from twisted.internet import reactor class FileReader(protocol.Pr

如何读取文件(非阻塞)并将其打印到标准输出(仍然是非阻塞)?这是我能想到的最简单的方法,但它让你觉得一定有更好的方法。更可取的做法是使用一些类似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()

这是Twisted的一个弱点。异步文件I/O很难做到,而且可能不可能做到“正确”。有一张票已经开了很长时间:你可能会找到一个有用的地方继续讨论


您在这里使用的习惯用法肯定是我们目前提供的最接近正确的习惯用法。

我不知道有什么更好的方法,但下面是如何在中实现的,谢谢@Glyph。我非常尊重你。大量精彩而艰苦的工作。