0

我写了一个小的 Python 程序。它通过运行 main.py 每 15 分钟执行一次,它只是将 2 个其他 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() 引起的,但我不知道我还应该调用什么函数?

谢谢...

4

3 回答 3

3

在python中,您可以将它放在一个try except块中:

try:
    import moduleA
except ImportError,e:
    import moduleB
于 2013-08-28T19:59:58.937 回答
2

python 导入语句是一个表达式,就像任何其他 Python 代码一样。您可以将模块导入包装在 try...except 块中,如下所示:

import somemodule
try:
  from someothermodule import Temperature
except ImportError,e:
   Temperature = 20
于 2013-08-28T19:59:49.317 回答
0

The code posted is pretty much it.

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

Thanks for the answers so far... I guess there is no way to exit the if statement nicely and pass the assumed Temperature value to main.py?

于 2013-08-29T09:05:26.020 回答