Seite 1 von 1

Python subprocess ausgabe zeilenweise auslesen

Verfasst: Donnerstag 17. November 2016, 15:55
von nieselfriem
Hallo zusammen,

ich möchte das Kommando chkconfig in einem Pythonscript ausführen und dort die Ausgabe Zeilenweise auswerten. Die Ausgabe ist auf dem Bildschirm ist zeilenweise. Jedoch kann ich diesen String nicht zeilenweise auswerten.

Code: Alles auswählen

#!/usr/bin/python
import subprocess
import re
def check_daemons():
    cmd = ['chkconfig']
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    out, err = p.communicate()

    print repr(out)
    print type(out)
    for line in out:
         print line

check_daemons()

Wenn ich allerdings den String zeilenweise ausgeben möchte, dann wird jeder Buchstabe zeilenweise ausgeben und nicht die Zeile.

Es wird folgendes ausgegeben:

Code: Alles auswählen

0
:
o
f
f
	
1
:
o
f
f
	
2
:
o
f
f

statt:

Code: Alles auswählen

:
abrt-ccpp      	0:off	1:off	2:off	3:on	4:off	5:on	6:off
abrtd          	0:off	1:off	2:off	3:on	4:off	5:on	6:off
acpid          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
VG niesel

Re: Python subprocess ausgabe zeilenweise auslesen

Verfasst: Donnerstag 17. November 2016, 15:58
von nieselfriem
hat sich erledigt.

Kaum in das Forum eingetragen, hat man die richtigen Stichwörter bei Google eingetragen udn die Lösung gefunden:


for line in out.split(os.linesep):
print line

Re: Python subprocess ausgabe zeilenweise auslesen

Verfasst: Donnerstag 17. November 2016, 16:20
von BlackJack
@nieselfriem: Oder auch einfach die `splitlines()`-Methode auf Zeichenketten.

Re: Python subprocess ausgabe zeilenweise auslesen

Verfasst: Donnerstag 17. November 2016, 16:35
von Sirius3
Oder gleich stdout lesen:

Code: Alles auswählen

p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for line in p.stdout:
    print line