有什么方法可以创建一个程序,它可以为另一个文件提供输入并收集它的输出?
谷歌给我的最好的就是这个。我试图重新创建(阅读:以一种未知的方式复制代码(阅读:在黑暗中刺伤))
我得到了这个
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:如果我之前的陈述令人困惑。我的观点很简单:你能教我吗?:))
答案 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)。