2015-08-21 78 views
1

我一直在努力運行一個python mainmodel.py模型(該模型使用「mainmodel.py」模型,從一切命令)。如何在另一個python腳本的循環中調用並運行python mainmodel.py?

問題是我不能在python循環中運行這個模型。 理想是在不同條件之間運行模型,對模型進行敏感性分析(對15個參數中的每一個都有很多變化)。 我TREID使用此: How to run a Python script from another Python script in the cross-platform way?

How to run a python script from another python script and get the returned status code?

我的代碼來調用「mainmodel.py」很簡單,只有當一個運行模式,我的代碼來調用「mainmodel .py「是:

################################################### 
__author__ = 'Isaque' 
import mainmodel 
import subprocess 
import sys 

for t in range(3): 
    print 'MAJOR LOOP %s T'%t 
    for i in range(2): 
     subprocess.call((sys.executable, "mainmodel.py")) 
     print 'MINOR LOOP %s'%i 

################################################# 

問題是,我們需要測試模型中的許多參數。因爲要做到這一點(在分析的敏感性)自動化! 在此先感謝! Isaque

+0

我不知道我理解你的問題。什麼是'mainmodel.py'?它如何獲得其參數?你真的需要將它作爲腳本來調用,還是可以導入它並運行其功能? – Blckknght

+0

嗨岡薩隆,「mainmodel.py」是模型的控制器。從「主模型」被稱爲模型的所有部分。 這個想法是使用「控制」模型來調用「mainmodel」作爲16個參數運行(每個參數有20個不同的值)。 在這段代碼中,我開發了一個序列來選擇參數。但我可以在「控制」中做到這一點,但我無法將選定的值從「控制」轉移到「發生器」模塊。 Chers! –

回答

3
 #Please check the below code. Hope it helps. 

     #Demo for mainmodel.py 
     import sys 

     def check_args(temp1,temp2): 
      if temp1 == temp2: 
       return True 
      else: 
       return False 

     def main(): 
      arg1 = sys.argv[1] 
      arg2 = sys.argv[2] 
      print "I am in mainmodel.py" 
      ret = check_args(arg1,arg2) 
      if ret: 
       #print "Success" 
       sys.exit(0) 
      else: 
       #print "Fail" 
       sys.exit(1) 

     if __name__ == '__main__': 
      main() 
    #========================================================= 

    #Calling mainmodel.py with args testing 

    import os 
    for t in range(3): 
     print 'MAJOR LOOP %s T'%t 
     for i in range(3): 
      print 'MINOR LOOP %s'%i 
      cmd = "python mainmodel.py "+ str(t) +" " + str(i) 
      print cmd 
      ret_main_model = os.system(cmd) 
      if ret_main_model == 0: 
       print "Success" 
      else: 
       print "Fail" 
      print "-----------------------------" 

#========================================= 
#Output 

C:\Users\Administrator\Desktop>python call.py 
MAJOR LOOP 0 T 
MINOR LOOP 0 
python mainmodel.py 0 0 
I am in mainmodel.py 
Success 
----------------------------- 
MINOR LOOP 1 
python mainmodel.py 0 1 
I am in mainmodel.py 
Fail 
----------------------------- 
MINOR LOOP 2 
python mainmodel.py 0 2 
I am in mainmodel.py 
Fail 
----------------------------- 
MAJOR LOOP 1 T 
MINOR LOOP 0 
python mainmodel.py 1 0 
I am in mainmodel.py 
Fail 
----------------------------- 
MINOR LOOP 1 
python mainmodel.py 1 1 
I am in mainmodel.py 
Success 
----------------------------- 
MINOR LOOP 2 
python mainmodel.py 1 2 
I am in mainmodel.py 
Fail 
----------------------------- 
MAJOR LOOP 2 T 
MINOR LOOP 0 
python mainmodel.py 2 0 
I am in mainmodel.py 
Fail 
----------------------------- 
MINOR LOOP 1 
python mainmodel.py 2 1 
I am in mainmodel.py 
Fail 
----------------------------- 
MINOR LOOP 2 
python mainmodel.py 2 2 
I am in mainmodel.py 
Success 
----------------------------- 

C:\Users\Administrator\Desktop> 
+0

嗨Dinesh! 這是完美的作品! 非常感謝你! 乾杯 –

相關問題