如何使用system()命令从另一个python脚本执行python脚本中的变量值?

时间:2016-03-29 19:52:14

标签: python python-2.7

我有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的值显示为虚拟值。实际值是由它上面的代码生成的,我没有显示,因为它不相关。

1 个答案:

答案 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()