如何在python中退出模块?

时间:2018-01-08 10:48:40

标签: python

我有几个python脚本。需要第一个脚本来存储对象创建的逻辑,其余脚本从第一个脚本导入对象并使用它。我的麻烦在于第一个脚本:首先检查对应的pickle文件是否存在,如果存在,脚本从pickle文件加载对象并停止执行。那么如何在不终止python iterpretator的情况下停止执行第一个脚本呢?

第一个脚本(将其命名为create_main_object.py)如下所示:

import pickle
import os
with open('main_object', 'rb') as input1:
    main_object = pickle.load(input1)
    exit() #this currently terminate interpretator
....
###logic for creation main_object
...
with open('main_object', 'wb') as output:
        pickle.dump(main_object, output, pickle.HIGHEST_PROTOCOL)

另一个脚本导入main_object:

from create_main_object import main_object

1 个答案:

答案 0 :(得分:2)

您应该整理模块,并将不同的操作放在不同的功能中。 如果你有一个创建对象的动作,比如main_object,那么将该逻辑封装在一个函数中:

def main_object_factory():
    with open('main_object', 'rb') as input1:
        return pickle.load(input1)

然后,从您的模块中导入该特定功能:

from create_main_object import main_object_factory

有关您的信息,请将其称为factory pattern