Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #17762 > unrolled thread
| Started by | MRAB <python@mrabarnett.plus.com> |
|---|---|
| First post | 2011-12-23 01:18 +0000 |
| Last post | 2011-12-23 01:18 +0000 |
| 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.
Re: reading multiline output MRAB <python@mrabarnett.plus.com> - 2011-12-23 01:18 +0000
| From | MRAB <python@mrabarnett.plus.com> |
|---|---|
| Date | 2011-12-23 01:18 +0000 |
| Subject | Re: reading multiline output |
| Message-ID | <mailman.4008.1324603122.27778.python-list@python.org> |
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 top | Article view | comp.lang.python
csiph-web