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
Konsolen ausgaben in Python
"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)
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.
danke für die Antworten dann werde ich mir mal das subprocess-Modul ansehen 
-
lunar
Ein völlig überflüssiges?Leonidas hat geschrieben:Und Linux from Scratch ist was für ein System?syntor hat geschrieben:@lunar: Geht das nicht nur auf Linux?
SCNR
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
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.
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.
@ 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
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
