registre los errores de sintaxis y las excepciones no detectadas para un subproceso python e imprímalas en el terminal
He estado intentando escribir un programa que registra las excepciones no detectadas y los errores de sintaxis de un subproceso. Fácil, ¿verdad? Solo pipastderr
al lugar correcto.
sin embargo, el subproceso es otro programa de python, lo llamarétest.py
- Eso debe ejecutarse como si sus resultados / errores no estuvieran siendo capturados. Es decir, ejecutar el programa logger debe parecer que el usuario acaba de ejecutarpython test.py
como normal.
Para complicar aún más el problema esel problema eseraw_input
en realidad se envía astderr
Sireadline
no se utiliza Desafortunadamente, no puedoimport readline
, ya que no tengo control sobre los archivos que se ejecutan utilizando mi registrador de errores.
Notas:
Estoy bastante restringido en las máquinas en las que este código se ejecutará. No puedo instalarpexpect
o editar el*customize.py
Archivos (ya que el programa será ejecutado por muchos usuarios diferentes). Realmente siento que debería haber una solución estándar de todas formas ...Esto solo tiene que funcionar en macs.La motivación para esto es que soy parte de un equipo que investiga los errores que los nuevos programadores cometen.Lo que he intentadoHe intentado los siguientes métodos, sin éxito:
solo usandotee
como en la pregunta¿Cómo escribo stderr en un archivo mientras uso "tee" con una tubería? (no pudo producirraw_input
indicaciones); implementaciones de pythontee
que encontré en varias preguntas de SO tenía problemas similaressobrescribiendosys.excepthook
(no lo hizo funcionar para un subproceso)esta pregunta es La mejor respuesta parecía prometedora, pero no se pudo mostrar.raw_input
avisa correctamentelamódulo de registro parece útil para escribir realmente en un archivo de registro, pero no parece llegar al punto crucial del problemalectores stderr personalizadosgooglear sin fin