Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #17765 > unrolled thread

Re: reading multiline output

Started byMac Smith <macsmith.us@gmail.com>
First post2011-12-23 07:35 +0530
Last post2011-12-23 07:35 +0530
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: reading multiline output Mac Smith <macsmith.us@gmail.com> - 2011-12-23 07:35 +0530

#17765 — Re: reading multiline output

FromMac Smith <macsmith.us@gmail.com>
Date2011-12-23 07:35 +0530
SubjectRe: reading multiline output
Message-ID<mailman.4011.1324605938.27778.python-list@python.org>
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"

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web