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


Groups > comp.lang.python > #17765

Re: reading multiline output

Subject Re: reading multiline output
From Mac Smith <macsmith.us@gmail.com>
Date 2011-12-23 07:35 +0530
References <79DF8234-67BF-4297-ACE6-8D091D05B3E9@gmail.com> <EAC763DC-04F6-497F-8455-1CF40A0ACC2E@gmail.com> <4EF3CF8B.4060005@mrabarnett.plus.com> <FFB26576-7928-4E01-8D56-26071FDB39CE@gmail.com> <4EF3D6F8.3020203@mrabarnett.plus.com>
Newsgroups comp.lang.python
Message-ID <mailman.4011.1324605938.27778.python-list@python.org> (permalink)

Show all headers | View raw


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"

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

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

csiph-web