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:[email protected]] >Komu: Konference PyCZ <[email protected]> >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 >[email protected] >http://www.py.cz/mailman/listinfo/python _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
