Вывести вывод терминала в файл при вызове Java из Python - PullRequest
0 голосов
/ 26 мая 2018

Я использую Java-код (используя maven) из python.

    with changeDir(runDir):
        print "mvn clean"
        subprocess.call(["mvn clean"], shell=True)
    with changeDir(runDir):
        print "mvn compile"
        subprocess.call(["mvn compile"], shell=True)
    print "compile time",datetime.now() - startTime     
    with changeDir(runDir):
        print "mvn package"
        subprocess.call(["mvn package -DskipTests=true"], shell=True)
    with changeDir(runDir):
        subprocess.call(["export MAVEN_OPTS=\"-Xmx10g -Xms10g -XX:MaxPermSize=10g -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit\""], shell=True)
        print "mvn exec"
        subprocess.call(["mvn exec:java -Dexec.mainClass=examples.Example -Dexec.args=\"pathToFile"+fname+"\""], shell=True)

В отличие от командной строки, когда я пытаюсь поместить выполнение во внешний файл, такой как out.txt, сначала выводится вывод Java, а затем вывод Python.

Первый вывод Java

[INFO] Scanning for projects...
[INFO] Inspecting build with total of 1 modules...
[INFO] Installing Nexus Staging features:
....
..

Затем вывод Python

mvn clean
mvn compile
compile time 0:00:08.027680
mvn package
mvn exec

, но когда я не пытаюсь распечатать вывод терминала во внешнем файле, в терминалеЯ вижу, что это распечатывается на основе порядка того, что в моем коде:

mvn clean
    [INFO] Scanning for projects...
    [INFO] Inspecting build with total of 1 modules...
    [INFO] Installing Nexus Staging features:
....
..
mvn compile
    [INFO] Scanning for projects...
    [INFO] Inspecting build with total of 1 modules...
    [INFO] Installing Nexus Staging features:

Почему это происходит

...