2013-08-21 5 views
1

추적 객체를 시도하고 저장하려고 시도했는데 액세스 할 수있는 파일로 피클하려고했습니다. 이것에 대한 유스 케이스의 예는 실행할 파이썬 코드를 실행할 팜 컴퓨터에 제출하는 경우입니다. 세션을 열고 해당 트레이스 백에 액세스하여 문제를 디버깅하기보다는 오히려 문제를 디버깅하는 것이 좋을 것입니다. 추적의 로그. 나는 이것을 할 수있는 어떤 종류의 방법이 있는지 모르지만 그것이 왜 그렇게 될 수 없는지를 묻는 가치가 있다고 생각했습니다. 당신이 traceback.print_exception(type, value, traceback[, limit[, file]])을 사용하고 텍스트 나 JSON에 저장하거나 docs파이썬에서 역 추적 객체를 저장하는 방법

를 참조 할 수 있습니다 당신이 찾아내는 경우가 도움이 표시하시기 바랍니다 수

답변

1

좋아 ..이를

+0

OP는 로그를 원하지 않습니다. "그냥 추적의 로그를 보지 않고." 당신이 로깅에 대해 말하는 것처럼 들리네. 답변에 대문자와 구두법을 정확하게 입력하십시오. ([How to Answer] (http://stackoverflow.com/help/how-to-answer)에서 : "우리는 모든 대답이 완벽 할 것으로 기대하지 않지만 정확한 철자법, 구두점 및 문법을 가진 대답은 읽기보다 자주 자주 읽는 경향이 있습니다. 언제든지 언제든지 돌아가서 답변을 편집하여 개선 할 수 있습니다. ") –

+0

정확함. 에러의 로그를 얻는 대신, 어떻게 든 트레이스 백 객체를 pickle하고 그 객체를 파일에 저장하여 새 세션에서 트레이스 백 상태를 해제하고 복구 할 수있게하는 것이 좋습니다. pdb의 post mortem이 sys.last_traceback traceback 객체를 가져 오는 것과 비슷하며 세션을 디버깅 할 수 있습니다. –

-1

:)가에 따라 올바른 또는 upvote에 고맙습니다 어떻게 코드를 작성했는지, try 문이 아마도 가장 좋은 대답 일 것입니다. 오류는 Python의 내장 된 Exception을 상속받은 클래스 일 뿐이므로 던져진 오류에 대한 자세한 정보가 필요한 곳이면 어디든지 사용자 정의 오류를 발생시킬 수 있습니다. 오류의 이름을 바꾸거나 첫 번째 인수로 적절한 문자열을 전달하면됩니다. try 코드를 사용하고 except 문 except CustomError as e을 사용하면 except 문에서 e에서 원하는 모든 정보를 일반 인스턴스로 가져올 수 있습니다. 예 :

def script(): 
    try: codeblock 
    except Exception as e: raise Error1('You hit %s error in the first block'% e) 
    try: codeblock 2 
    except Exception as e: raise Error2('You hit %s error in the second block' % e) 

try: script() 
except Exception as e: 
    with open('path\to\file.txt','w') as outFile: 
     outFile.write(e) 

마지막 부분은 정말 자신의 로그 파일을 만드는 것보다 더 아무것도 아니다,하지만 당신은 오른쪽 어딘가에을 작성해야합니다 :

코드는 것입니까?

위에서 언급 한 traceback 모듈을 사용하는 경우 오류 정보를 얻을 수 있습니다. 여기에 명령의 모든 당신에게 역 추적 목록을 얻을 수 있습니다 : 당신이 로그 파일을보고 피하려고하는 경우 otherhand에 http://docs.python.org/2/library/traceback.html

를, 역 추적 모듈은 같은 일을 당신에게 로그 파일을 제공하는 것입니다 다른 형식으로. 코드에 자신의 오류 문을 추가하면 실제로 일어난 일에 대해 암호문 ValueError보다 많은 정보를 얻을 수 있습니다. 추적 오류를 특수 오류로 인쇄하면 문제에 대한 더 많은 정보를 얻을 수 있습니다.

+0

이 코드는 작동하지 않습니다.'TypeError : 예상되는 문자 버퍼 객체' – devin