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


Groups > comp.lang.python > #17762

Re: reading multiline output

Date 2011-12-23 01:18 +0000
From MRAB <python@mrabarnett.plus.com>
Subject Re: reading multiline output
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>
Newsgroups comp.lang.python
Message-ID <mailman.4008.1324603122.27778.python-list@python.org> (permalink)

Show all headers | View raw


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

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


Thread

Re: reading multiline output MRAB <python@mrabarnett.plus.com> - 2011-12-23 01:18 +0000

csiph-web