On 23/12/2011 02:05, Mac Smith wrote:

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

thanks, this helped. just need to correct line_ending="\n" should be 
line_ending="\r"

I wrote the default as "\n" because that's the normal line ending in
Python.

If, as in your case, the line ending is different, just pass the
appropriate string as the second argument.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to