Python相当于Java的Redirect.INHERIT

时间:2016-04-13 14:03:40

标签: java python subprocess processbuilder

我正在尝试复制Python中用Java编写的以下脚本,但我没有在Python中看到等效的Redirect.INHERIT。移植它的正确方法是什么?

import java.lang.ProcessBuilder;
import java.lang.ProcessBuilder.Redirect;

public class TestProcessBuilder {
    public static void main(String args[]) {
        try {
            ProcessBuilder builder = new ProcessBuilder("fairymax");
            builder.redirectInput(Redirect.INHERIT);
            builder.redirectOutput(Redirect.INHERIT);
            builder.redirectError(Redirect.INHERIT);

            Process subProcess = builder.start();
            subProcess.waitFor();
        }
        catch (Exception e) {
           e.printStackTrace();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

Redirect.INHERIT是Python中的默认值。在Python中模拟Java代码:

#!/usr/bin/env python
import subprocess

rc = subprocess.call("fairymax")

答案 1 :(得分:0)

子进程的Popen.communicate()方法与提交的代码块完全相同。

import subprocess
p = subprocess.Popen("fairymax").communicate()

我测试了这个,它适用于Python,但不适用于Jython。