I'm constantly flipping back and forth between bash and python. Sometimes, I'll start a program in one, and end up recoding in the other, or including a bunch of python inside my bash scripts, or snippets of bash in my python.
But what if python had more of the power of bash-style pipes? I might not need to flip back and forth so much. I could code almost entirely in python. The kind of thing I do over and over in bash looks like: #!/usr/bin/env bash # exit on errors, like python. Exit on undefind variables, like python. set -eu # give the true/false value of the last false command in a pipeline # not the true/false value of the lat command in the pipeline - like # nothing I've seen set -o pipefail # save output in "output", but only echo it to the screen if the command fails if ! output=$(foo | bar 2>&1) then echo "$0: foo | bar failed" 1>&2 echo "$output" 1>&2 exit 1 fi Sometimes I use $PIPESTATUS too, but not that much. I'm aware that python has a variety of pipe handling support in its standard library. But is there a similarly-simple way already, in python, of hooking the stdout of process foo to the stdin of process bar, saving the stdout and errors from both in a variable, and still having convenient access to process exit values? Would it be possible to overload | (pipe) in python to have the same behavior as in bash? I could deal with slightly more cumbersome syntax, like: (stdout, stderrs, exit_status) = proc('foo') | proc('bar') ...if the basic semantics were there. How about it? Has someone already done this? -- http://mail.python.org/mailman/listinfo/python-list