2016-04-13 41 views
0

Python'da Java'da yazılmış aşağıdaki komut dosyasını çoğaltmaya çalışıyorum, ancak Python'da bir Redirect.INHERIT eşdeğerini göremiyorum. Bunu yapmak için doğru yaklaşım ne olurdu?Java'nın Redirect.INHERIT Python eşdeğeri

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(); 
     } 
    } 
} 
+0

[ 'subprocess'] dokümantasyonu (https://docs.python.org/3/library/subprocess.html) tek ihtiyacınız vardır. –

cevap

0

Alt işlemin Popen.communicate() yöntemi, gönderilen kod bloğuyla aynı şeyi yapar.

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

Bunu test ettim ve Python ile çalışıyor ancak Jython ile çalışmıyor. Python'da varsayılan değer olarak

+0

stdin/stdout/stderr komutunu yeniden yönlendirmediğiniz sürece .communicate() işlevini çağırmanıza gerek yoktur (kodda 'subprocess.PIPE' öğesini görmüyorsanız; .communicate()' olarak adlandırmayın). – jfs

1

Redirect.INHERIT. Python Java kodunu taklit etmek için:

#!/usr/bin/env python 
import subprocess 

rc = subprocess.call("fairymax")