[python] Problém s subprocess

azurIt azurit na pobox.sk
Sobota Březen 13 21:34:51 CET 2010


subprocess predsa plne podporuje presmerovanie standardneho aj chyboveho vystupu (hint: stdout, stderr):
http://docs.python.org/release/2.5.4/lib/node528.html

Priklad:

import subprocess
javac = subprocess.Popen(args=["C:\\java\\bin\\javac.exe Main.java -d ."], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print javac.communicate()

azur


>-----Pôvodná správa-----
>Od: Radek Hol [mailto:radekholypublic na gmail.com]
>Komu: Konference PyCZ <python na py.cz>
>Predmet: [python] Problém s subprocess
>
>
>Ahoj,
>chtěl bych se Vás zeptat, zda byste mi neuměli poradit s mým problémem
>s voláním externího programu.
>Používám Python 2.5.4 (věřím, že kvůli kompatibilitě s Jython 2.5.1)
>na Windows 7.
>
>Snažím se o spuštění "překladače" "javac.exe":
>
>------------------------------------------------
>...
>javac = subprocess.Popen(u"C:\\java\\bin\\javac.exe Main.java -d .")
>javac.communicate()
>------------------------------------------------
>
>Zjistil jsem ale, že takto volaný externí program (nebo alepoň
>"javac.exe") s následným voláním "communicate()" (ale nemusí to být
>jen volání této metody - může to být jakýkoliv další kód) mi nevypíše
>na chybový výstup žádné informace (pokud je chyba v "Main.java"), i
>když při volání ze systémové příkazové řádky se informace vypíší.
>Dále jsem zjistil, že když můj program skončí ihned po
>"...subprocess.Popen..." (tedy vynechám "communicate()"), tak se na
>chybový výstup vypíše, co má. Jenže já tímto samozřejmě nechci
>končit...
>Zkoušel jsem i použití funkce "time.sleep()", ale bez úspěchu.
>Pokud v "Main.java" chyba není, má "javac.exe" vygenerovat soubor
>"Main.class", jenže chování je podobné... Tedy, pokud se pod voláním
>"javac.exe" vyskytuje ještě další kód, soubor "Main.class" se
>vygeneruje až po skončení mého programu. (Ověřeno pomocí
>"os.path.exists()" i "os.listdir()")
>Přitom návratový kód je již nastaven...
>
>Předem děkuji za pomoc, Radek Holý
>_______________________________________________
>Python mailing list
>Python na py.cz
>http://www.py.cz/mailman/listinfo/python


Další informace o konferenci Python