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