Ultimas do CanalQb

Python - Usando inspect para identificar a linha com erro, ou que está sendo executada

Python - Usando inspect
Canal Qb

Você possui um Script de 1000 linhas, e precisa saber em qual linha está no momento.
Use o inspect, veja o exemplo abaixo: 
import inspect

def mostrar_linha_atual():
    frame = inspect.currentframe()
    lineno = frame.f_lineno
    print("Executando a linha {}".format(lineno))

mostrar_linha_atual()
# código do script aqui
mostrar_linha_atual()
Agora se você deseja que a linha só apresente quando um erro surgir, use com try-except:

import inspect

def minha_funcao():
    # linha com erro
    print(variavel_inexistente)

try:
    minha_funcao()
except Exception as e:
    _, _, tb = sys.exc_info()
    linha = tb.tb_lineno
    print(f"Ocorreu um erro na linha {linha}: {e}")
Neste exemplo, a função minha_funcao contém uma linha que tenta imprimir uma variável que não existe, o que gera uma exceção NameError. Em seguida, usamos uma cláusula try/except para capturar a exceção e exibir informações sobre ela.

Dentro da cláusula except, usamos a função sys.exc_info() para obter informações sobre a exceção que foi capturada. O terceiro item retornado por essa função é o objeto traceback, que contém informações sobre o rastreamento da pilha no momento em que a exceção ocorreu. Em seguida, usamos a função tb_lineno do objeto traceback para obter o número da linha onde o erro ocorreu. Finalmente, usamos a função print para exibir a mensagem "Ocorreu um erro na linha X: Y", onde X é o número da linha e Y é a descrição da exceção.

Este é apenas um exemplo simples de como você pode usar o módulo inspect para obter informações úteis sobre erros em suas funções. Lembre-se de que, em situações de produção, é importante tratar adequadamente os erros em suas funções e não exibir informações sensíveis ou detalhes internos do seu código para o usuário final.

Nenhum comentário

Comente só assim vamos crescer juntos!

Observação: somente um membro deste blog pode postar um comentário.