registrar erros de sintaxe e exceções não identificadas para um subprocesso python e imprimi-los no terminal
Eu tenho tentado escrever um programa que registra exceções não identificadas e erros de sintaxe para um subprocesso. Fácil, certo? Apenas canostderr
para o lugar certo.
Contudo, o subprocesso é outro programa python - vou chamá-lotest.py
- que precisa ser executado como se suas saídas / erros não estivessem sendo capturados. Ou seja, executar o programa do criador de logs precisa parecer que o usuário acabou de executarpython test.py
como normal.
Complicando ainda mais o problema éo problema naquelaraw_input
na verdade é enviado parastderr
E sereadline
não é usado. Infelizmente, não posso simplesmenteimport readline
, desde que eu não tenho controle sobre os arquivos que estão sendo executados usando meu logger de erro.
Notas:
Estou bastante restrito nas máquinas em que esse código será executado. Não consigo instalarpexpect
ou edite o*customize.py
arquivos (desde que o programa será executado por muitos usuários diferentes). Eu realmente sinto que deveria haver uma solução stdlib de qualquer maneira ...Isso só tem que funcionar em macs.A motivação para isso é que faço parte de uma equipe que está pesquisando os erros que os novos programadores cometem.O que eu tenteiEu tentei os seguintes métodos, sem sucesso:
apenas usandotee
como na perguntaComo faço para escrever stderr para um arquivo enquanto estiver usando "tee" com um pipe? (não conseguiu produzirraw_input
prompts); implementações python detee
que eu encontrei em várias perguntas do SO tiveram problemas semelhantessobrescrevendosys.excepthook
(não conseguiu fazer funcionar para um subprocesso)esta questão é resposta top parecia promissor, mas não conseguiu exibirraw_input
solicita corretamente.amódulo de registro Parece útil para realmente gravar em um arquivo de log, mas não parece chegar ao cerne da questãoleitores stderr personalizadosgoogling sem fim