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.
Wenn ich beispielsweise eine Textdatei mit folgendem Inhalt habe:
erhalte ich nach dem Aufruf von shell_exec("cat test.txt") folgendes ErgebnisLorem Ipsum
Mit 2 Leerzeilen am Schluss. Nunja, die Frage ist: Was muss ich ändern um dieses Verhalten zu vermeiden?Lorem Ipsum
HIer der enstprechende Code:
Code: Alles auswählen
# -*- 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)