Seite 1 von 1

befehl auf kommandozeile ausführen und rückmeldung abfragen

Verfasst: Mittwoch 12. August 2009, 15:14
von mosi
Ich habe das Problem, dass ich aus einem Pythonprogramm heraus einen Kommandozeilenaufruf starten möchte und ich aber auch die antwort der kommandozeile wieder in meinem Pythonprgramm brauche.
Wie kann ich das realiesieren?
Erste Experimente ergaben folgende Lösung:

Code: Alles auswählen

a = os.popen("ls")
    print a
(anzeigen des verzeichnisinhalts)
aber anstatt, dass ich jetzt den verzeichnisinhalt zu lesen bekomme kommt folgendes:
<open file 'ls', mode 'r' at 0x9078a40>
wo sitzt da der Wurm?
Vielen Dank im Voraus!

Verfasst: Mittwoch 12. August 2009, 15:30
von cofi
Das "Problem" ist, dass ``os.popen`` wie ``popen`` der cstdlib einen Filedescriptor zurueckgibt.

``a.readlines()`` gibt dir den Inhalt.

Aber bevor du jetzt damit losrennst: Vergiss ``os.popen`` und nutze ``subprocess.Popen`` (und lies die entsprechende Doku)

Verfasst: Mittwoch 12. August 2009, 15:37
von mosi
vielen dank!!

Verfasst: Mittwoch 12. August 2009, 16:46
von snafu
Und bevor du auf externe Programme zurückgreifst, möchtest du vielleicht Python-Boardmittel benutzen. Wenn es dir z.B. um die Dateinamen im aktuellen Verzeichnis geht, kann man das besser so machen:

Code: Alles auswählen

import os
os.listdir('.')
bzw. für eine exakte Nachbildung der Ausgabe von `ls`:

Code: Alles auswählen

sorted(os.listdir('.'))

Verfasst: Mittwoch 12. August 2009, 17:44
von mosi
vielen dank aber das war nur ein beispiel
das soll mal ein compileraufruf für einen pascalcompiler werden und den hat python leider nicht an bord :lol: