Batchfile in python...aber etwas tricky

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

Donnerstag 29. März 2012, 08:50

Hi,

Ich habe ein batchfile das hin und wieder errors auswirft. Diese errors sind aber einfach nur Output, also man kann sie mit ERRORLEVEL nicht auswerten.

Nun dachte ich ich rufe das batchfile in einem pythonscript auf und werte dort die errors bzw den output aus.
Konkret geht es um folgendes.

Das .bat gibt sowas aus wie

"processing filename..."

Wenn ein Fehler kommt steht da natürlich was anderes.

Nun will ich in dem python script, sofern kein Fehler kommt das genannte file löschen.

Das batchfile ausführen ist kein problem, aber den Output auswerten...ich kriegs nicht hin.
Wie mache ich das ?

Wie greif ich auf den output zu ?

Danke im Voraus !
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Donnerstag 29. März 2012, 09:04

Wie sieht denn dein bisheriger Code aus?
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

Donnerstag 29. März 2012, 09:09

Okay ich habs.
Die Funktionalität ist zwar noch nicht gegeben aber ich komm zumindest an den output ran:

Code: Alles auswählen

from subprocess import Popen, PIPE

executer = Popen("\\\\lngviedbsp005\\bulk_upload\\bulk_upload_share_folderized_exed.bat", stderr=PIPE)
stdout_text, stderr_text = executer.communicate()

for textline in stderr_text.split("\n"): 
    print textline
print "Done!"
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Donnerstag 29. März 2012, 09:18

Code: Alles auswählen

stdout_text, stderr_text = executer.communicate()
"stdout_text" ist so nicht ganz korrekt. Dazu musst du diesen auch noch per "stdout=PIPE" rausholen.
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

Donnerstag 29. März 2012, 09:22

JonasR hat geschrieben:

Code: Alles auswählen

stdout_text, stderr_text = executer.communicate()
"stdout_text" ist so nicht ganz korrekt. Dazu musst du diesen auch noch per "stdout=PIPE" rausholen.
jo das is noch ein Überbleibsel.
Hast natürlich recht :)
Antworten