In article <[EMAIL PROTECTED]>,
Fredrik Lundh <[EMAIL PROTECTED]> wrote:
>Cameron Laird wrote:
>
>> Your interactive session does indeed exhibit the behavior that
>> puzzles me. My expectation was that StringIO and the std*
>> parameters to Popen() were made for each other; certainly there
>> are many cases where stdout and stderr can be redirected *to* a
>> StringIO. Is it simply the case that stdin demands a more
>> file-like object? While that disappoints me, I certainly can
>> program around it. My question, then: does stdin effectively
>> require something really in the filesystem, or perhaps the
>> stdout of a previous subprocess? Is there no built-in way to
>> feed it an in-memory construct?
>
>set the appropriate stream to subprocess.PIPE, and write to it.
>
> p = subprocess.Popen(..., stdin=subprocess.PIPE)
> p.stdin.write("hello")
> p.stdin.close() # signal end of file
.
.
.
Of course! My; it's a sign of how far I was from the right
subprocess mentality that I so missed what is obvious after
the fact. The source code (for the 2.4 release) also comes
close to making it clear, as I realized about the time you
posted your follow-up, Fredrik.
Is this--streaming data to a subprocess--too lightweight to
deserve write-up in the (online) Cookbook? I'll volunteer.
In retrospect, I see there are plenty of examples on-line
of the usage, but I don't think an ignorant searcher (like
me) will find them on his own.
Thanks, Fredrik.
--
http://mail.python.org/mailman/listinfo/python-list