我一直在努力运行python mainmodel.py模型(模型使用“mainmodel.py”模型,从命令的所有内容开始)。
问题是我无法在python循环中运行此模型。 在模型的敏感性分析中,ideia在不同条件之间运行模型(15个参数中的每一个都有许多变化)。 我很想用这个: 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
#################################################
问题是,我们需要测试模型中的许多参数。因为这样做(在analisys的敏感性)自动化!! 提前致谢!! Isaque
答案 0 :(得分: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>
答案 1 :(得分:0)
另一种方法是触发__main__哨兵。有关详细信息,请查看: