Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Python: Rückgabe von Shellaufruf unvollständig

  1. #1
    wmaker
    Gast

    Python: Rückgabe von Shellaufruf unvollständig

    Hallo zusammen,
    ich bin Python-Neuling und bei meinen ersten Experimenten gleich über ein Problem gestolpert wo ich einfach nix zu finde - und zwar kommen Resultate von Shellaufrufen nur unvollständig in Python an.

    mein Script:
    Code:
    import os
    import string
    out=string.join(os.popen("equery l app-admin/eselect-1.0_rc2").readlines())
    print out
    das passiert wenn ich es aufrufe:
    Code:
    # python test.py 
     * installed packages
     app-admin/eselect-1.0_rc2
    und das hätte eigentlich passieren sollen:
    Code:
    # equery l app-admin/eselect-1.0_rc2
    [ Searching for package 'eselect' in 'app-admin' among: ]
     * installed packages
    [I--] [  ] app-admin/eselect-1.0_rc2 (0)
    wie man sieht, kommt alles was in runden oder eckigen Klammern steht nicht mit - was sehr betrüblich ist. Hat jemand eine Idee woran das liegt oder besser noch wie ich schaffe, dass doch die komplette Ausgabe in Python ankommt?

  2. #2
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Ich vermute mal, dass die eckigen Klammern nicht an stdout, sondern an stderr geschickt werden. In diesem Falle wirst du popen3 verwenden müssen und dann child_stdout und child_stderr getrennt auslesen müssen...

  3. #3
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677
    Zitat Zitat von Joghurt
    Ich vermute mal, dass die eckigen Klammern nicht an stdout, sondern an stderr geschickt werden. In diesem Falle wirst du popen3 verwenden müssen und dann child_stdout und child_stderr getrennt auslesen müssen...
    Oder mittels 2>&1 stdout nach stderr umlenken (das klappt allerdings nur, wenn das Argument von popen an die Shell geschickt wird und nicht direkt mit fork & exec ausgeführt wird; da müsste man jetzt in die Python Doku schauen wie das intern implementiert ist).

  4. #4
    Registrierter Benutzer
    Registriert seit
    10.02.2005
    Ort
    Hückelhoven
    Beiträge
    26
    Oder einfach popen4 nehmen.

  5. #5
    Registrierter Benutzer Avatar von fs111
    Registriert seit
    23.03.2002
    Beiträge
    594
    BTW: import string ist obsolet, das kann der normale string auch alles, einfach "".join(irgendEineListe)

    fs111
    ....::::Mein Blag::::....

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •