为其他文件提供输入并收集输出的程序

时间:2014-04-14 02:35:37

标签: python io subprocess stdin

有什么方法可以创建一个程序,它可以为另一个文件提供输入并收集它的输出?

谷歌给我的最好的就是这个。我试图重新创建(阅读:以一种未知的方式复制代码(阅读:在黑暗中刺伤))

我得到了这个

import time
string="file.py"
process=subprocess.Popen(string,stdin=subprocess.PIPE,stdout=subprocess.PIPE);
process.stdin.write("3 5")
time.sleep(1)
print process.stdout.read()

它给了我错误

  File "D:\Pekerjaan non website\IO\reader.py", line 3, in <module>
    process=subprocess.Popen(string,stdin=subprocess.PIPE,stdout=subprocess.PIPE);
NameError: name 'subprocess' is not defined

有人可以告诉我如何创建该程序。 (

注意:我不了解这种程序I / O或子进程

注意:这取决于你。你将从我的代码中解释这一点,或者抛弃我的代码并从零开始解释。

事先谢谢你。

(PS:如果我之前的陈述令人困惑。我的观点很简单:你能教我吗?:))

2 个答案:

答案 0 :(得分:2)

subprocess是您需要导入的stdlib模块(与time相同) - 所以您只需要:

import subprocess

在您尝试使用其中的功能之前的某个时间(通常,您希望在代码顶部附近,在当前import time下方执行此操作。)

答案 1 :(得分:1)

除了lvc的答案,你应该考虑使用Popen.communicate()。像,

import subprocess
string="file.py"
process=subprocess.Popen(string,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
res=process.communicate("3 5")
print res[0]

通过这种方式,您不必使用该sleep命令。等待进程终止并返回一个元组(stdoutdata,stderrdata)。