The "loop and a half"

Paul Moore p.f.moore at gmail.com
Fri Oct 6 09:35:49 EDT 2017


On 6 October 2017 at 13:56, bartc <bc at freeuk.com> wrote:
> If you don't like the word 'crude', try 'lazy'. Take this example of the gcc
> C compiler:
>
>  > gcc -E program.c
>
> This preprocesses the code and shows the result. Typical programs will have
> many thousands of lines of output, but it just dumps it to the console. You
> /have/ to use '>' to use it practically (Windows doesn't really have a
> working '|' system.)

No you don't. Ignoring the fact that "windows doesn't really have a
working '|' system" (which is an oversimplification, by the way) the
following all work:

Python:
    data = subprocess.check_output(["gcc", "-E", "program.c"])
Powershell:
    $x = (gcc -E program.c)
cmd:
    for /f %i in ('gcc -E program.c') do ...

If gcc -E wrote its output to a file, you'd have to read that file,
manage the process of deleting it after use (and handle possible
deletion of it if an error occurred), etc.

Writing to stdout is very often a good design. Not always, but nothing
is ever 100% black and white, but sufficiently often that building an
OS based on the idea (Unix) was pretty successful :-)

Paul



More information about the Python-list mailing list