测试类似 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.select
或 select.poll
非常简单,而且可能比其他任何东西都好。如果它也必须在 Windows 上工作,您可以编写单独的 Windows 和 POSIX 代码,或跨平台异步事件引擎,但最简单的答案可能是生成一个执行阻塞读取的线程,并在线程之间发出信号使用队列、condvar 等。那么,您想要哪种方法?
【参考方案1】:
subprocess.PIPE
不仅仅是一个文件,它是一个实际的文件。因此,您可以 get its file descriptor 并将其传递给 select.select()
或类似函数。
【讨论】:
select.select()
不适用于 Windows 上的管道以上是关于测试类似 Python 文件的对象中的未读字符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章