2013-08-28 6 views
0

Я написал небольшую программу Python. Он выполняется каждые 15 минут, запустив main.py, который просто загружает 2 других скрипта python в качестве модулей.Значение импорта Python, если модуль не работает

Проблема заключается в том, что делать, когда один модуль выходит из строя (например, из-за потерянного подключения к Интернету). Один из модулей анализирует канал из Интернета. Если он терпит неудачу, он должен принять определенное значение. Проблема заключается в том, чтобы импортировать это значение в 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

Оператор импорта питон выражение так же, как любой другой код Python. Вы можете обернуть импорта модуля в попытке ... кроме блока, например, так:

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 = [...] 

Спасибо за ответы до сих пор ... Я предполагаю, что нет никакого способа, чтобы выйти из, если заявление красиво и передать Предполагаемое значение температуры для main.py?

Смежные вопросы