python
2011-12-30 2 views 2 likes 
2

여기 파이썬의 바이트의 튜토리얼 코드 :sys 모듈의 사용을 이해하지

Traceback (most recent call last): 
    File "C:/Python/sysmodulepr.py", line 17, in <module> 
    sys.exit() 
SystemExit 

을 :이 코드를 실행하면,이 나타나는 오류가

import sys 

filename = 'poem.txt' 

def readfile(filename): 
    #Print a file to standard output 
    f = file(filename) 
    while True: 
     line = f.readline() 
     if len(line) == 0: 
      break 
     print line, 
    f.close() 

if len(sys.argv) < 2: 
    print 'No action specified' 
    sys.exit() //<--This is where the error is occurring 

if sys.argv[1].startswith('--'): 
    option = sys.argv[1][2:] #fetches sys.argv[1] without first 2 char 
    if option == 'version': 
     print 'Version 1.2' 

    elif option == 'help': 
     print '''\ 
This program prints files to the standard output. 
Any number of files can be specified. 
Options include: 
    --version: Prints the version number 
    --help: Displays this help''' 

    else: 
     print 'Unknown option' 
    sys.exit() 

else: 
    for filename in sys.argv[1:]: 
     readfile(filename) 

나는 왜 그런지 이해하지 못한다. 도와주세요.

+0

추적없이 끝내려면 [이 질문] (http://stackoverflow.com/questions/1187970/how-to-exit-from-python-without-traceback)을 확인하십시오. – osoner

+0

이 코드를 실행 해 보았습니다. "오류"가 나타나지 않습니다. 아래의 해답은 이것을 실제로 SystemExit 예외로 식별합니다.이 예외는 실제로 오류가 아니지만 프로그램이 종료되기 전에 정리를 수행 할 수있는 고리입니다. 그러나 일반적으로'SystemExit' 예외는 이와 같이 역 추적을하지 않습니다. 여기 뭔가 이상한 일이 있습니다 ... – senderle

+1

사용하는 파이썬의 버전은 무엇입니까? 이것은 일반적인 Python 설치가 아닙니다. 맞습니까? –

답변

3

sys.exit()가 프로그램의 17 번째 줄에서 실행되었음을 알려줍니다.

The entry for for sys.exit in the Python documentation은 프로그램이 종료되었음을 알려줍니다.

다른 출력을 생성하지 않고도이 행을 실행할 수있는 방법이 없으므로 질문에 누락 된 부분이 있습니다.

+2

이것은 [SystemExit] (http://docs.python.org/library/exceptions.html#exceptions.SystemExit)의 문서에 의해 뒷받침됩니다 : "처리되지 않으면 파이썬 인터프리터가 종료되고 스택 추적이 인쇄되지 않습니다 . " –

1

오류가 아닙니다. 문서에서

import sys 

sys.exit() 

sys.exit()에 대한 : 파이썬에서

종료 sys.exit() 정리 사용되는 리소스 유휴에서

시도 try:... finally 블록을 할 수 있도록 SystemExit 예외를 발생시킵니다. 이는 SystemExit 예외를 발생시킴으로써 구현되므로 try 문의 finally 절에 지정된 정리 작업이 적용되며 외부 수준에서 종료 시도를 가로 챌 수 있습니다.

편집 당신이 (유휴 예를 들어) 일부 대화 형 인터프리터에서 스크립트를 실행하려고하지 않는 한 오류가 정상적으로 인쇄되지해야

. 걱정할 필요는 없지만 스크립트는 독립 실행 형처럼 보이므로 스크립트를 그대로 사용해야합니다.

2

IDLE을 사용 중이라면 어쨌든 스택을 인쇄합니다. 명령 줄에서 스크립트를 실행하면 IDE 외부에서 실행될 때 오류 메시지가 인쇄되지 않습니다.

관련 문제