Imprimir para stderr em Python
Este tutorial explica como escrever para a saída de erro padrão, stderr, em Python. Também lista alguns exemplos de códigos para explicar diferentes formas de escrever para stderr, uma vez que a sintaxe mudou com o tempo.
Imprimir para stderr em Python 3.x
Para Python3.x, a função print tem um argumento de palavra-chave file que especifica o destino da impressão. É sys.stdout por defeito mas pode ser sys.stderr ou mesmo um caminho de ficheiro.
Imprime a mensagem para stderr se file=sys.stderr. Um código de exemplo é dado abaixo:
import sys
print("Error", file=sys.stderr)
Resultado:
Error
Imprime para stderr em Python 2.x
Para Python2.x, a declaração print poderia imprimir a mensagem para um destino stdout, stderr, ou para um caminho de ficheiro. Este objecto file-like é especificado após o >>. Ver o exemplo abaixo.
import sys
print >>sys.stderr, "Error Detected!"
Resultado:
Error Detected!
Utilize o sys.stderr para imprimir para o stderr
O módulo sys de Python fornece informação valiosa e funcionalidades chave. O método sys.stderr.write() pode ser utilizado. O método sys.stderr.write()imprime a mensagem como o parâmetro dado ao método stderr. Ver o exemplo abaixo.
import sys
sys.stderr.write("Error!")
Resultado:
Error!
Use o módulo logging para imprimir em stderr
O módulo logging em Python é especificamente criado para registar mensagens. O módulo de registo pode ser utilizado para imprimir para stderr depois de definir a configuração básica. O módulo logging.basicConfig() toma o formato de message como entrada, e logging.getLogger() devolve um objecto do módulo logging. O log.warning() pega no texto de warning e imprime-o para stderr.
Um exemplo básico desta abordagem é mostrado abaixo:
import logging
logging.basicConfig(format="%(messages)s")
log = logging.getLogger()
log.warning("Error Found!")
Resultado:
Error Found!
Syed Moiz is an experienced and versatile technical content creator. He is a computer scientist by profession. Having a sound grip on technical areas of programming languages, he is actively contributing to solving programming problems and training fledglings.
LinkedIn