【问题标题】:Using files as stdin and stdout for subprocess使用文件作为子进程的标准输入和标准输出
【发布时间】:2013-02-16 12:53:03
【问题描述】:

如何使用 python 子进程模块复制以下批处理命令?

myprogram < myinput.in > myoutput.out

换句话说,如何使用myinput.in 的内容作为标准输入和myoutput.out 作为标准输出来运行myprogram

【问题讨论】:

    标签: python subprocess stdout stdin


    【解决方案1】:

    以下应该有效:

    myinput = open('myinput.in')
    myoutput = open('myoutput.out', 'w')
    p = subprocess.Popen('myprogram.exe', stdin=myinput, stdout=myoutput)
    p.wait()
    myoutput.flush()
    

    【讨论】:

    • 这看起来很接近我的需要。如何检测是否发生错误?
    • 没关系。 stderr=subprocess.PIPE,那么,如果 stderr: 打印错误
    • myoutput = open('myoutput.out'. 'w') 行中的参数应该用, 分隔,而不是.
    • 虽然这个答案仍然正确,但请注意 Python 3.5 中添加的 subprocess.run() 对于大多数 subprocess 用例来说是一个更好的 API。它同样采用 stdinstdout 关键字参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多