Python - Problem mit Funktion
-
Ich habe nachfolgende Python-Datei, welche eine Funktion shell_exec() zur Verfügung stellen soll.
Diese Funktion soll nachdem os.popen ja deprecated ist, diese ersetzen.
Sprich, ich gebe einen String an, der dann wie in der Konsole ausgeführt wird.shell_exec("cat test.txt | grep -v abc") zB
Leider haperts mit dem Ding noch etwas: ich bekomme anscheinend wahllos viele Leerzeilen am Schluss zu viel ausgegeben.
Beispiel:
Lorem Ipsum
in einer test.txt und der Aufruf shell_exec("cat test.txt") ergibt:
Lorem Ipsum LEERZEILE LEERZEILE
mit 2 Leerzeilen. Wie kann ich das beheben?
# -*- coding: utf-8 ### Imports ### import os import sys import shlex import subprocess def shell_exec(command): cmds = command.split("|") cmds = [ cmd.strip() for cmd in cmds] cmds = map(shlex.split, cmds) procs = [] prev_out = sys.stdin for cmd in cmds: proc = subprocess.Popen(cmd, stdin=prev_out, stdout=subprocess.PIPE) prev_out = proc.stdout procs.append(proc) (stdout, stderr) = procs[-1].communicate() for proc in reversed(procs): proc.wait() print(stdout)