Virtual file for subprocess

B

bobnotbob

I am calling external executable from my python program (using
subprocess). This external program's output is a text file which I
then read and parse. Is there any way to "sandbox" the calling of
this external program so that it writes to a virtual file instead of
the hardcoded text?
 
L

Lie Ryan

I am calling external executable from my python program (using
subprocess). This external program's output is a text file which I
then read and parse. Is there any way to "sandbox" the calling of
this external program so that it writes to a virtual file instead of
the hardcoded text?

If the program writes its outputs to the stdout, you can redirect the
program's stdout using subprocess, try to find a switch that will tell
it to write to stdout. Otherwise, you're pretty much stuck to using a
real file AFAIK.
 
G

Grant Edwards

If the program writes its outputs to the stdout, you can
redirect the program's stdout using subprocess, try to find a
switch that will tell it to write to stdout. Otherwise, you're
pretty much stuck to using a real file AFAIK.

Most Unix systems have paths that you can pass to programs
which think they need to write to "files". Accessing those
files actually access already open file descriptors such as
stdin, stdout, and stderr.

On Linux, for example, you can tell the program to write to
/proc/self/fd/1 and that's actually stdout which can then be a
pipe connected to the Python program that invoked the program.

This can be very useful when executing a program which can be
told what file to write to, but who's author was too
narrow-minded to provide the option to send output to stdout.

If you need to get fancy you can create multiple input/output
pipes that are inherited by the child program and then
references as /proc/self/fd/<whatever>.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,904
Latest member
HealthyVisionsCBDPrice

Latest Threads

Top