[pyar] subprocess ignora el parametro bufsize

Alejandro Santos listas en alejolp.com
Mie Nov 5 12:58:42 ART 2014


Hola! Tratando de procesar la salida de un proceso con subprocess me
encontré con algo muy extraño; tengo el siguiente programa que no me
muestra nada en la terminal:

$ cat test.py
#!/usr/bin/env python

import subprocess

c = ['/usr/bin/tail', '-f', '/var/log/dmesg']
proc = subprocess.Popen(c,
                                     bufsize=1,
                                     shell=False,
                                     stdout=subprocess.PIPE,
                                     stderr=subprocess.STDOUT)

for line in proc.stdout:
    print line

Este programa es un ejemplo del problema que tengo en mi app real. No
quiero ver el archivo dmesg ni ningun otro archivo, sino procesar la
salida de una aplicación que produce datos por stdout.

La doc de Popen dice que bufsize=1 es buffering por lineas, por lo
tanto yo espero que muestra las primeras 9 ó 10 lineas del tail, pero
esto no ocurre. No hay nada en la terminal. Es correcto?

Si cambio "tail" por "yes" me llena la terminal de y-griegas; o sea,
anda. Tengo la impresión que hay algún buffer intermediario que no
estoy teniendo en cuenta. En qué le estoy pifiando?

si alguien sabe la rta y quiere ganarse unos ptos en stack overflow, acá esta:

http://stackoverflow.com/q/26761252/209629

Gracias

-- 
Alejandro Santos


More information about the pyar mailing list