2013-08-28 2 views
0

작은 파이썬 프로그램을 작성했습니다. 모듈로 2 개의 다른 파이썬 스크립트를로드하는 main.py를 실행하여 15 분마다 실행됩니다.모듈 실패시 파이썬 가져 오기 값

문제는 모듈 하나가 실패한 경우 (예 : 인터넷 연결이 끊어짐) 때문입니다. 모듈 중 하나는 인터넷의 피드를 구문 분석합니다. 실패하면 특정 값을 취해야합니다. 문제는이 값을 main.py로 가져 오는 것입니다.

모듈 :

[...] 
feed=feedparser.parse(url) 

if not feed.feed: 
    # Assume Error 
    print("Error") 
    Temperature = 20 
    print 'Assuming', Temperature, 'degrees C' 
    sys.exit() 

Temperature = [...] 

나는 모듈이 실패 할 수

, 모듈 가져 오기 후 main.py 종료됩니다. 이 문제를 어떻게 해결할 수 있습니까?

나는 이것이 sys.exit()을 호출하여 발생한다고 생각하지만, 나는 다른 함수를 호출해야하는지 모른다.

감사합니다 ...

+0

오류를 찾으셨습니까? 그렇다면 잡아서 작동 할 때까지 가져 오기를 다시 시도하십시오. –

+1

물론'sys.exit()'는 오류없이 즉시 종료됩니다. 네가하고 싶지 않다면 ... 네가 정확히하고 싶은게 뭐야? 다음 코드를 건너 뛰려는 경우,'if' /'else'를 작성하고 다음 코드를'else' 안에 넣으십시오. (또는 더 잘, 함수로 리팩토링하고 그냥'else' 안에 호출하십시오.) 그러나 더 많은 코드를 보지 않고 (더 좋게는, 더 이상 사용하지 않는 버전) (http://sscce.org)) 보다 구체적인 추천을하는 것은 어렵습니다. – abarnert

+0

암시 적 프로 시저 호출로 import 문을 사용하고 있습니다. 모듈이 필요한 것은 아닙니다. 코드를 함수에 넣고 함수를 호출하는 것이 좋습니다. 또한 오류 상황을 좀 더 정상적으로 처리하십시오 ('sys.exit()'를 사용하지 않는 것 같이). –

답변

2

파이썬 import 문은 다른 파이썬 코드와 마찬가지로 표현식입니다. 당신과 같이 블록을 제외하고 ... 시도에 모듈 가져 오기를 포장 할 수 있습니다

파이썬에서
import somemodule 
try: 
    from someothermodule import Temperature 
except ImportError,e: 
    Temperature = 20 
3

당신이 그것을 가질 수 try except 블록 :

try: 
    import moduleA 
except ImportError,e: 
    import moduleB 
0

게시 코드는 꽤 많이있다 .

main.py :

from temperature import Temperature 
[some code to insert Temperature into SQLite DB] 

temperature.py : 답변에 대한

[...] 
feed=feedparser.parse(url) 

if not feed.feed: 
    # Assume Error 
    print("Error") 
    Temperature = 20 
    print 'Assuming', Temperature, 'degrees C' 
    sys.exit() 

Temperature = [...] 

덕분에 지금까지 ... 내가 멋지게 if 문을 종료하고 통과 할 수있는 방법이없는 것 같아요 온도를 main.py로 가정 했습니까?

관련 문제