测试类似 Python 文件的对象中的未读字符 [重复]

Posted

技术标签:

【中文标题】测试类似 Python 文件的对象中的未读字符 [重复]【英文标题】:Testing for unread characters in a Python file-like object [duplicate] 【发布时间】:2012-09-19 17:29:10 【问题描述】:

可能重复:Non-blocking read on a subprocess.PIPE in python

是否可以测试Python类文件对象在当前读取位置之后是否有字符?

我正在尝试将subprocess.PIPE 刷新到我的标准输出,因此我会不断地在其上运行read(1)。我只想阅读是否真的有什么东西可以让我得到(否则它会挂起直到有东西出现)。

【问题讨论】:

但是默认情况下这些管道是阻塞的,这意味着当你做read(1)并且没有要读取的内容时,它会自动阻塞直到有要读取的内容。 如果您编写的代码不必在 Windows 上运行,select.selectselect.poll 非常简单,而且可能比其他任何东西都好。如果它也必须在 Windows 上工作,您可以编写单独的 Windows 和 POSIX 代码,或跨平台异步事件引擎,但最简单的答案可能是生成一个执行阻塞读取的线程,并在线程之间发出信号使用队列、condvar 等。那么,您想要哪种方法? 【参考方案1】:

subprocess.PIPE 不仅仅是一个文件,它是一个实际的文件。因此,您可以 get its file descriptor 并将其传递给 select.select() 或类似函数。

【讨论】:

select.select() 不适用于 Windows 上的管道

以上是关于测试类似 Python 文件的对象中的未读字符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Socket,长连接,消息推送,消息提醒,未读消息提醒,消息通知,未读消息通知

Quickblox 中公共对话的未读计数

XMPP 上的未读消息计数

chrome开发-extension

chrome开发-extension

有没哪个知道邮箱里的未读邮件查看以后,还可以让他显示为未读吗?