Python Forum
Thread Rating:
  • 2 Vote(s) - 4 Average
  • 1
  • 2
  • 3
  • 4
  • 5
pipeline between 2 programs
#5
Just a bit simpler:
def pipe(command1, command2):
    pout = subprocess.Popen(command1, stdout=subprocess.PIPE)
    pin = subprocess.Popen(command2, stdin=pout.stdout)
    pout.wait()
    pin.wait()
If you want to pipe many processes:
def many_pipe(*commands):
    first, *rest = [shlex.split(cmd) for cmd in commands]
    procs = [subprocess.Popen(first, stdout=subprocess.PIPE)]
    for cmd in rest:
        proc = subprocess.Popen(cmd, stdin=procs[-1].stdout, stdout=subprocess.PIPE)
        procs.append(proc)
    [p.wait() for p in procs]
    return procs[-1].stdout.read().decode(sys.getdefaultencoding())
I use shlex.split to split the command. If you depend on user input, you should not use shlex.split.

If you relay on Python2, you don't have the nice argument unpacking.
You can 'clone' this functionallity:

commands = ['ls -l', 'grep foo', 'sort']
first, rest = commands.pop(0), commands
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply


Messages In This Thread
pipeline between 2 programs - by Skaperen - May-28-2018, 05:29 AM
RE: pipeline between 2 programs - by nilamo - Jun-25-2018, 09:02 PM
RE: pipeline between 2 programs - by Skaperen - Jun-26-2018, 03:10 AM
RE: pipeline between 2 programs - by nilamo - Jun-26-2018, 03:19 PM
RE: pipeline between 2 programs - by DeaD_EyE - Jun-26-2018, 05:22 PM
RE: pipeline between 2 programs - by nilamo - Jun-26-2018, 05:46 PM
RE: pipeline between 2 programs - by Skaperen - Jun-26-2018, 08:16 PM
RE: pipeline between 2 programs - by nilamo - Jun-26-2018, 08:20 PM
RE: pipeline between 2 programs - by Skaperen - Jun-26-2018, 09:09 PM
RE: pipeline between 2 programs - by Skaperen - Jun-30-2018, 01:28 AM
RE: pipeline between 2 programs - by nilamo - Jul-02-2018, 03:53 PM
RE: pipeline between 2 programs - by Skaperen - Jul-02-2018, 10:48 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  builing a long variable-length command-pipeline Skaperen 6 4,514 Dec-14-2017, 02:02 AM
Last Post: Skaperen

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020