【问题标题】:Program that gives input to other file and collects output向其他文件提供输入并收集输出的程序
【发布时间】:2014-05-27 21:09:01
【问题描述】:

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

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

我得到了这个

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:如果我之前的陈述令人困惑。我的意思很简单:你能教我吗?:))

【问题讨论】:

    标签: python io subprocess stdin


    【解决方案1】:

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

    import subprocess
    

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

    【讨论】:

      【解决方案2】:

      除了 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]
      

      这样你就不必使用那个睡眠命令了。它会等待进程终止并返回一个元组作为(stdoutdata,stderrdata)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        • 2019-09-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多