我有python script
( parent_script.py ),使用python script
命令执行另一个system()
( child_script.py ) 。在这个python脚本中有一个变量(var1
),其值我想在parent_script.py脚本中返回或访问。我当前的 parent_script.py 是:
def call_script():
cmd = "/usr/local/bin/python2.7 child_script.py --arg1 arg1 --arg2 arg2"
output_code = system(cmd)
if output_code != 0:
print(strerror(output_code) + ' \n')
sys.exit(1)
# Get the value of var1 in child_script.py
if __name__ == '__main__':
call_script()
我当前的 child_script.py 是:
def func1():
# bunch of other code
var1 = '2015' # this is the value that I want to access in parent_script.py
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Child Script')
parser.add_argument('--arg1', required=True)
parser.add_argument('--arg2', required=True)
args = parser.parse_args()
func1(args)
如何获取在parent_script.py中返回或访问的var1
的值?
注意:我知道使用子进程我可以执行python脚本并获取var1的值但在这种情况下我只能使用system()来执行python脚本。此外,child_script中var1的值显示为虚拟值。实际值是由它上面的代码生成的,我没有显示,因为它不相关。
答案 0 :(得分:1)
由于您使用的是python2.7
,请使用execfile()
代替os.system()
:
sys.argv[1:] = ["--arg1", "arg1", "--arg2", "arg2"]
try:
execfile("child_script.py")
except SystemExit as error:
output_code = error.code
else:
output_code = 0
然后您可以正常使用var1
。 (这假设global var1
放在func1()
的开头。
但请注意,Python3中不存在execfile()
。