Linux Kommando -- Output pro Zeile in Stringvariable

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
Benutzeravatar
Amberfox
User
Beiträge: 10
Registriert: Montag 8. Oktober 2007, 15:29
Wohnort: Paderborn

Montag 10. März 2008, 16:10

Hallo Forum,

ich habe ein Python2.5-Script in welchem ich mit subprocess.Popen ein Kommando auf der Shell absetze. Den Output hole ich mir so in eine Varaible:

retoralocks = myoralocks.stdout.read()

Der Output sieht so aus:

9099 0x19396e07:0x001af399 0:0 0 GRANTED (0x91160a48)
9099 0x19396e07:0x001af3a1 0:0 0 GRANTED (0xeb2ffbd8)
9099 0x19396e07:0x001af39b 0:0 0 GRANTED (0x926c4728)
9099 0x19396e07:0x001af39a 0:0 0 GRANTED (0xb0993d68)
9099 0x19396e07:0x001af397 0:0 0 GRANTED (0x7829bbd8)
9099 0x19396e07:0x001af396 0:0 0 GRANTED (0xed9f6bd8)
9087 0x17396d96:0x000911bb 0:0 0 GRANTED (0xaee564d0)

Nun möchte ich den Output Zeile pro Zeile bearbeiten.

"for line in retoralocks" funktioniert leider nicht so wie ich will, da er anscheinend jedes Zeichen als eigenen String interpretiert. Hat jemand einen guten Hinweis, wie man hier vorgehen könnte??

Grüße und Danke im Vorraus

Jochen
Everything was all good just a week ago...
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Montag 10. März 2008, 16:15

Strings haben eine `splitlines`-Methode.

Code: Alles auswählen

for line in retoralocks.splitlines():
    pass
BlackJack

Montag 10. März 2008, 16:56

Oder nicht alles als eine Zeichenkette lesen, sondern als Liste von Zeilen:

Code: Alles auswählen

retoralocks = myoralocks.stdout.readlines()
Oder gar nicht alles auf einmal lesen, sondern gleich über das Dateiobjekt iterieren:

Code: Alles auswählen

for line in myoralocks.stdout:
    # Do something with `line`.
Und Deine Namensgebung sieht überarbeitenswert aus.
Benutzeravatar
Amberfox
User
Beiträge: 10
Registriert: Montag 8. Oktober 2007, 15:29
Wohnort: Paderborn

Dienstag 11. März 2008, 09:27

Hallo,

danke für die Antworten! Hat alles super funktioniert, aber mir perönlich hat die Methode mit "retoralocks = myoralocks.stdout.readlines()" am Besten gefallen.

Grüße und Danke

Jochen
Everything was all good just a week ago...
Antworten