Grabbing the output of a long-winded shell call (in GNU/Linux)

Efrat Regev efrat_regev at yahoo.com
Tue May 1 17:40:58 EDT 2007


Diez B. Roggisch wrote:
> Efrat Regev schrieb:
>> draghuram at gmail.com wrote:
>>> On May 1, 2:23 pm, Efrat Regev <efrat_re... at yahoo.com> wrote:
>>>
>>>> So my question is if there's a way to "grab" the output as it's being
>>>> generated. It doesn't matter if the solution is blocking (as opposed to
>>>> callback based), since threads can handle this. I just don't know 
>>>> how to
>>>> "grab" the output. I appreciate your time in reading (and answering
>>>> this), as I've been googling several hours for this.
>>>
>>> There may be more pythonic solution than what I suggest here but this
>>> is what I have done when I needed similar functionality. Basically run
>>> your command in the background and redirect its stdout/err to a temp
>>> file. You may run the command either in the background or in a
>>> separate thread. You can then run the command "tail --retry --
>>> pid=<pid> -n+0 -F <output_file>" and grab the output. The tail command
>>> exits once the real command is done.
> 
> Or instead use the python subprocess module and read the commands 
> stdin/out/err from the Popen-object.
> 
> Diez

Excellent, thanks!

BTW:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/440554

(found this after seeing responses on list)



More information about the Python-list mailing list