Sie müssen splitlines
Methode verwenden, um geteilt Ausgabe von Linien
str.splitlines ([keepends]) Gibt eine Liste der Zeilen in der Zeichenfolge, brechen an Zeilengrenzen . Diese Methode verwendet den universellen Zeilenumbruch Ansatz für das Aufteilen von Zeilen. Zeilenumbrüche sind in der Ergebnisliste nicht enthalten, es sei denn, Keepends ist gegeben und wahr.
Zum Beispiel gibt 'ab c \ n \ nde fg \ rkl \ r \ n'.splitlines() [' ab c ',' ', ' de fg ',' kl '] zurück, während das selbe ist Aufruf mit Splitlines (True) gibt ['ab c \ n', '\ n', 'de fg \', 'kl \ r \ n'] zurück.
Im Gegensatz zu split(), wenn ein Trennzeichenfolge September gegeben wird, diese Methode eine leere Liste für den leeren String zurückgibt, und einen Anschlussleitungsbruch nicht in einer zusätzlichen Zeile zur Folge haben.
Diese Methode wird Shell-Befehl und Rückgabeliste der Linien laufen:
def run_shell_command_multiline(cmd):
p = subprocess.Popen([cmd], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
if p.returncode != 0:
raise RuntimeError("%r failed, status code %s stdout %r stderr %r" % (
cmd, p.returncode, stdout, stderr))
return stdout.splitlines() # This is the stdout from the shell command
Es ist nicht klar, was Sie wollen. 'a' ist bereits eine Linkliste. Versuchen Sie 'für Zeile in einer: Druckzeile', um selbst zu sehen. –
Die 'readlines'-Funktion trennt Ihren Eingabestrom bereits in eine' liste' von Zeilen. –
Es funktioniert perfekt auf meinem System. 'a' ist eine Liste, in der jedes Element eine Zeile der Befehlsausgabe ist. Können Sie die Ausgabe dieses Programms anzeigen, das Sie erhalten (zusammen mit dem, was Sie stattdessen erwartet haben)? –