Konsolen ausgaben in Python

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
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

Hallo an alle

Ich habe eine bestimmt recht einfache Frage ich bin gerade dabei ein Linux From Scratch
Installer zu schreiben, ich übergebe die einzelnen Kommandos per os.system("make") etc.

Gibt es eine Möglichkeit die ausgaben die eigentlich auf der Konsole sichtbar sind auch in
Python sichtbar zu machen???

LG
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Schau dir mal das subprocess-Modul an. Das möchtest du eh viel lieber verwenden als os.system ;-)
Das Leben ist wie ein Tennisball.
syntor
User
Beiträge: 88
Registriert: Donnerstag 2. Dezember 2010, 03:56

"auch" ist ein wenig schwieriger, wenn du gerne beides zur selben Zeit hättest. Am einfachsten ist es, zuerst alles via, wie von EyDu gesagt, subprocess und PIPE (2x) auszuführen. Dann kannst du mit communicate() den Output (sowie Fehler) abrufen - anschliessend ausgeben.

Wenn du beides gleichzeitig machen möchtest, hast das Problem, dass I/O "blocking" ist. Das heisst, wenn du z.B. über p.stdout.readline() die nächste Zeile abfragen willst - wobei p das Objekt von subprocess.Popen ist - dann wartet dein Pythonprogramm solange, bis das Unterprogramm eine Zeile nach stdout schreibt. In dieser Zeit könnte es aber auch nach stderr schreiben, das würdest du dann nicht mitbekommen.

Du müsstest also zwei Threads erstellen, je einen pro Datei-Deskriptor(stdout/stderr)
lunar

@syntor: Man benötigt keine Threads, um quasi parallel von mehreren Pipes zu lesen. "select()" oder "epoll()" reichen vollauf. Davon abgesehen geht es dem OP wohl nur darum, überhaupt die Ausgabe eines Prozesses zu erlangen.
syntor
User
Beiträge: 88
Registriert: Donnerstag 2. Dezember 2010, 03:56

@lunar: Geht das nicht nur auf Linux? Was den zweiten Teil betrifft: Da magst du recht haben :D
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

danke für die Antworten dann werde ich mir mal das subprocess-Modul ansehen :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

syntor hat geschrieben:@lunar: Geht das nicht nur auf Linux?
Und Linux from Scratch ist was für ein System?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Leonidas hat geschrieben:
syntor hat geschrieben:@lunar: Geht das nicht nur auf Linux?
Und Linux from Scratch ist was für ein System?
Ein völlig überflüssiges? ;)

SCNR
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

Hallo Leonidas

So eins: http://www.linuxfromscratch.org/

@lunar

Wie kommst du zu so einer Meinung ohne jegliche begründung???
Sowas hört man meistens von LFS Usern die zu faul sind sich damit Zeit
zu lassen. So wie ich deshalb Automatisiere ich es ja auch, aber mit X und
auch einem Desktop.


LG
lunar

@sttrader: Ach bitte, mein Beitrag war ein Scherz. Ich halte LFS zwar in der Tat für reichlich überflüssig und nutzlos, aber ich werde das jetzt bestimmt nicht mit Dir ausdiskutieren, zumal die Art Deines Beitrags darauf schließen lässt, dass Du Dein LFS bis aufs Blut verteidigen wirst, was jegliche Diskussion sowieso vollkommen sinnlos erscheinen lässt.

Leonidas weiß im Übrigen bestimmt, was LFS ist. Sein Beitrag war keine an Dich gerichtete Frage, sondern ein Hinweis mit dem Zaunpfahl an syntor, dass FLS in der Tat ein Linux ist, und sein Einwand gegen "select" und "epoll" daher eher überflüssig war.
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

@ lunar

Nein so dramatisch wie du es gerade siehst hab ich es nicht mal gedacht, ganz erlich
wollte dich nicht angreifen oder eine Diskusion auslösen, und bis aufs Blut verteidige ich nur meine Familie und nicht eine Software geschweige denn eine Anleitung.

Wollte nur eine allgemeine begründung haben ohne hintergedanken.

Sorry wenn ich mich vieleicht unpassend ausgedrückt habe.

LG
Antworten