2016-02-06 446 views
-1

我有幾個腳本(命名爲one.py和two.py)使用execfile循環調用對方。 one.py(這是開始的)有一些代碼(初始化),我只想執行一次。只初始化一次

我想繼續使用的execfile如果可能的話

我怎麼能做到這一點?

#one.py 
def initialize():   
    # initializing 

initialize() 

# do the main work 

execfile('two.py') 

---------------------------- 

#two.py 

# do some work 

execfile('one.py') 
+0

從one.py移動代碼到的execfile。 –

+0

'def(initialize):'應該是'def initialize():'? –

+0

要麼創建第三個文件,它執行初始化並調用two.py,或者使用某些存儲(例如數據庫,臨時文件),它存儲狀態「初始化」或「未初始化」。 –

回答

2

爲什麼不創建第三個文件zero.py,它開始初始化,然後執行one.py然後執行循環。

#zero.py 
def initialize(): 
# do some initializing 

initialize() 

execfile('one.py') 

另一個說明應該有更好的方法來運行你的代碼,然後這個execfile循環。

+0

不幸的是,初始化函數調用其他函數並使用駐留在one.py中的變量。 – user1530405

+0

您可以在zero.py中導入one.py,然後使用這些變量和函數嗎? – Skirrebattie

+0

然後創建一個臨時文件並在那裏保存你的狀態。 –

0

也許你可以定義一個運行你的任務的類?

舉例來說,像這樣:

from itertools import cycle 

class TaskRunner(object): 

    def __init__(self): 
     self.tasks = ('one.py', 'two.py') 

     # do some initializing 

    def run_continuously(self): 
     for filepath in cycle(self.tasks): 
      execfile(filepath) 


# to run: 
task_runner = TaskRunner() 
tsak_runner.run() 

---------------------------- 

#one.py 

# do the main work (without initializing) 


---------------------------- 

#two.py 

# do some work 

----------------------------