reading multiline output
Hi, I have started HandBrakeCLI using subprocess.popen but the output is multiline and not terminated with \n so i am not able to read it using readline() while the HandBrakeCLI is running. kindly suggest some alternative. i have attached the output in a file. output Description: Binary data -- Thanks Mac-- http://mail.python.org/mailman/listinfo/python-list
Re: reading multiline output
On 23-Dec-2011, at 6:17 AM, MRAB wrote: > On 23/12/2011 00:33, Mac Smith wrote: >> Hi, >> >> >> I have started HandBrakeCLI using subprocess.popen but the output is >> multiline and not terminated with \n so i am not able to read it >> using readline() while the HandBrakeCLI is running. kindly suggest >> some alternative. i have attached the output in a file. >> > The lines are terminated with \r, so read with read() and then split on > "\r". read() will read the complete output and than i will be able to parse it, i want to read the output of the command in realtime. -- http://mail.python.org/mailman/listinfo/python-list
Re: reading multiline output
On 23-Dec-2011, at 6:48 AM, MRAB wrote: > On 23/12/2011 01:07, Mac Smith wrote: >> >> On 23-Dec-2011, at 6:17 AM, MRAB wrote: >> >>> On 23/12/2011 00:33, Mac Smith wrote: >>>> Hi, >>>> >>>> >>>> I have started HandBrakeCLI using subprocess.popen but the output >>>> is multiline and not terminated with \n so i am not able to read >>>> it using readline() while the HandBrakeCLI is running. kindly >>>> suggest some alternative. i have attached the output in a file. >>>> >>> The lines are terminated with \r, so read with read() and then >>> split on "\r". >> >> read() will read the complete output and than i will be able to parse >> it, i want to read the output of the command in realtime. >> > Try telling it how much to read with read(size): > > def read_lines(output, line_ending="\n"): >buffer = "" > >while True: >chunk = output.read(1024) >if not chunk: >break > >buffer += chunk > >while True: >pos = buffer.find(line_ending) >if pos < 0: >break > >pos += len(line_ending) >yield buffer[ : pos] >buffer = buffer[pos : ] > >if buffer: >yield buffer > -- > http://mail.python.org/mailman/listinfo/python-list thanks, this helped. just need to correct line_ending="\n" should be line_ending="\r" -- http://mail.python.org/mailman/listinfo/python-list
subprocess.Popen strange bhaviour
Hi, I am using subprocess.Popen to start a movie ripping command HandBrakeCLI. My server is 64bit ubuntu server and has 8 cores. When the command starts it uses all 8 cores upto 80%-100% and works fine, but after 270 seconds the cpu usage of all the cores drops to 0% - 1%. I tried this many time this happens exactly after 270 seconds. Is there some predefined timeout?? -- Mac -- http://mail.python.org/mailman/listinfo/python-list
