I am now able to print stderr to the screen, however I still can not run 
conditional statements against stderr. 

Please see the screenshots(SS) here...

https://www.dropbox.com/sh/31wyjtvqymo94uk/AAAZaxwB27nw1nmz7tz69I5La?dl=0

Bo 

> On Aug 28, 2014, at 6:12 PM, Cameron Simpson <c...@zip.com.au> wrote:
> 
>> On 28Aug2014 09:42, Crush <crushe...@gmail.com> wrote:
>> As far as the pipe in...
>> 
>> "avconv -v verbose -re -analyzeduration 1000 
>> -ihttp://localhost:6498/ms2/1382097438004/0MediaPlayer+0+/octoshape+hVV+octolive.americaone.com+V+aone+V+live+V+ONECONNXTDEMO1_HD_flv/aoneliveONECONNXTDEMO1HDflv
>>  -c:v rawvideo -c:a pcm_s16le -ar 48000 -f nut - | ./bmdplay -m 12 -f pipe:0"
>> 
>> ...it has to be there.
> 
> Indeed. We're not arguing about that. Leave it there for.
> 
>> Currently, i am running a shell script that is handling this decoding 
>> process i.e. the real long avconv/bmdplay command. So you are saying leave 
>> the shell script and invoke it from a python script...something like "p = 
>> subprocess.Popen("./my_script.sh")? How will the above allow me to interact 
>> with stderr in oppose to running the avconv/bmdplay command directly in 
>> python?
> 
> No, we're no saying that.
> 
> You could (and presumably do) have this long incantation in your shell 
> script.  As far as the Python stuff goes, that does not change anything: you 
> can invoke your shell script or invoke your long command directly. Either way 
> you need to grab the stderr on the fly and work with it.
> 
> Personally, I would keep the pipeline in the shell script where it is easier 
> to edit and invoke the script from Python (easier to read). Your call.
> 
>> As far as not using "shell=True," if I dont have it set to True, the 
>> terminal hangs and will not display stderr to the screen as it is currently 
>> does.
> 
> Let's tackle shell=True later.
> 
> What you need to do is examine stderr before the shell script/pipeline is 
> complete, and for that you need to separate starting the process, reading 
> stderr, and waiting for process completion into distinct parts, which was 
> what my example code was doing. I'll recite it again here:
> 
>  from subprocess import Popen, PIPE
> 
>  P = Popen("avconv ... lots of arguments...", shell=True, stderr=PIPE)
> 
>  for line in P.stderr:
>      ... examine the line from stderr ...
> 
>  # ok, we have read all of stderr now
>  xit = P.wait()
>  if xit != 0:
>      ... command was unsuccessful, complain, maybe abort ...
> 
> Please try adapting your Python code to that and see where you end up.
> Put a print statement as the first line in the for-loop so you can see if you 
> are receiving stderr lines as intended.
> 
> Cheers,
> Cameron Simpson <c...@zip.com.au>
> 
> As soon as we started programming, we found to our surprise that it wasn't as
> easy to get programs right as we had thought. Debugging had to be discovered.
> I can remember the exact instant when I realized that a large part of my life
> from then on was going to be spent in finding mistakes in my own programs.
>        - Maurice Wilkes discovers debugging, 1949
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to