【发布时间】:2015-07-16 15:54:40
【问题描述】:
假设有一个程序用不同的输入产生不同的输出,如果输入是一个特定的值则终止。例如,它可以用 C++ 编写:
int main() {
int i;
while(true) {
cin >> i;
if (i) cout << i << endl;
else break;
}
return 0;
}
在这个程序中,如果你输入一个整数,它会在屏幕上打印出来。在您输入0 之前,程序永远不会终止。
那我怎样才能用 Python 立即获取一个标准输入对应的标准输出呢?也就是说,如果我给标准输入一个“1”,我会期望立即从标准输出中获取一个“1”,而这个过程还没有终止。
结论:有两种实现方式。
使用
subprocess.Popen,将子进程的stdout或stdin当作文件,写入stdin(需要'\n'),用readline从stdout读取使用库 pexpect。
【问题讨论】:
-
不能直接读取子进程的stdout吗?
-
对于我们这些不读 C++ 的人来说,你应该提到那个输出是什么样子的;具体来说,它是否以换行符终止?
-
如果使用
subprocess.Popen模块,直接读取,会一直等待,什么也不做。 -
不要回答你的问题。如果您愿意,您可以发布自己的答案。
标签: python subprocess stdout