Articles of tubo de

El script de Python canalizado toma el 100% de la CPU cuando se lee de una tubería rota

Tengo dos scripts de Python que se ejecutan en una máquina Ubuntu Linux. El primero envía toda su salida a stdout, el segundo lee desde stdin. Están conectados por una tubería simple, es decir, algo como esto: ./step1.py | ./step2.py Lo que hace step2 es que lee líneas de entrada en un bucle infinito y […]

¿Hay una manera de sondear un identificador de archivo devuelto desde subprocess.Popen?

Di que escribo esto: from subprocessing import Popen, STDOUT, PIPE p = Popen([“myproc”], stderr=STDOUT, stdout=PIPE) Ahora si lo hago line = p.stdout.readline() mi progtwig espera hasta que el subproceso emita la siguiente línea. ¿Hay alguna magia que pueda hacer para p.stdout para poder leer la salida si está allí, pero continuar de otra manera? Estoy […]

Los subprocesos de Python experimentan un retraso misterioso en la recepción de EOF estándar

Reduje un problema que estaba viendo en mi solicitud al siguiente caso de prueba. En este código, un proceso principal genera simultáneamente 2 (puede generar más) subprocesos que leen un gran mensaje del padre sobre la entrada estándar, duermen durante 5 segundos y escriben algo. Sin embargo, en algún lugar ocurre una espera inesperada, lo […]

Los resultados de Piping to Head en una tubería rota en shell shell desde Python

Tengo un comando que ejecutaría para generar una cadena aleatoria: var=`< /dev/urandom tr -dc _A-Zaz-0-9 | head -c8` Cuando ejecuto este comando en una sesión de bash interactiva no obtengo ningún error. Pero cuando pongo este comando en el script y lo ejecuto como un script, aparece el error Broken pipe indicado por tr. He […]

transmisión de datos en el comando con subprocess.Popen

Con frecuencia necesito ordenar una colección de archivos que contienen encabezados. Debido a que la clasificación depende del contenido del encabezado, este caso de uso es más complicado que las preguntas similares (por ejemplo, ¿Hay alguna forma de ignorar las líneas de encabezado en una clasificación UNIX? ). Tenía la esperanza de usar Python para […]

¿Cómo obtener datos de la línea de comandos desde un progtwig Python?

Quiero ejecutar un progtwig de línea de comandos desde un script de Python y obtener el resultado. ¿Cómo obtengo la información que muestra foo para poder usarla en mi script? Por ejemplo, llamo foo file1 desde la línea de comandos y se imprime Size: 3KB Name: file1.txt Other stuff: blah ¿Cómo puedo obtener el nombre […]

Cómo usar Subproceso en Windows

Estoy intentando guardar el resultado o la función runcmd en la variable Resultado . Esto es lo que he intentado: importar subproceso def runcmd(cmd): x = subprocess.Popen(cmd, stdout=subprocess.PIPE) Result = x.communicate(stdout) return Result runcmd(“dir”) Cuando ejecuto este código, obtengo este resultado: Traceback (most recent call last): File “C:\Python27\MyPython\MyCode.py”, line 7, in runcmd(“dir”) File “C:\Python27\MyPython\MyCode.py”, line […]

Manejo de stdin con tornado

¿Cómo escuchar los eventos que ocurren en la entrada estándar en Tornado loop? En particular, en un sistema de tornado, quiero leer desde la entrada estándar, reactjsr ante él y terminar si se cierra la entrada estándar. Al mismo tiempo, el servicio web Tornado se está ejecutando en el mismo proceso. Mientras buscaba esto, lo […]

Filtroscriptor de tubería incorrecta cuando se lee desde stdin en python

Duplicado de esta pregunta. Vota para cerrar. Considere esto en la línea de comandos de Windows. scriptA.py | scriptB.py En scriptA.py: sys.stdout.write( “hello” ) En scriptB.py: print sys.stdin.read() Esto genera el siguiente error: c:\> scriptA.py | scriptB.py close failed: [Errno 22] Invalid argument Traceback (most recent call last): File “c:\scriptB.py”, line 20, in print sys.stdin.read() […]

Readline de Python desde pipe en Linux

Al crear una tubería con os.pipe() , devuelve 2 números de archivo; un final de lectura y un final de escritura que se pueden escribir y leer de forma con os.write() / os.read() ; no hay os.readline (). ¿Es posible utilizar readline? import os readEnd, writeEnd = os.pipe() # something somewhere writes to the pipe […]