将值从一个脚本返回到另一个脚本

时间:2011-09-16 18:07:44

标签: python

我有以下脚本将在目录中按顺序运行每个脚本:

import os

directory = []

for dirpath, dirnames, filenames in os.walk("path\to\scripts"):
    for filename in [f for f in filenames if f.endswith(".py")]:
        directory.append(os.path.join(dirpath, filename))
for entry in directory:
    execfile(entry)
    print x

我的脚本看起来像这样:

def script1():
    x = "script 1 ran"
    return x

script1()

调用print x时,表示未定义x。我只是好奇是否有办法返回值,以便父脚本可以访问数据。

3 个答案:

答案 0 :(得分:7)

  

我很好奇是否有办法返回值,以便父脚本可以访问数据。

这就是定义函数和返回值的原因。

脚本1应该包含一个函数。

def main():
    all the various bits of script 1 except the import 
    return x

if __name__ == "__main__":
    x= main()
    print( x )

与你的相同,但现在可以在其他地方使用

脚本2可以做到这一点。

import script1
print script1.main()

这就是一个脚本使用另一个脚本的方式。

答案 1 :(得分:3)

您可以使用execfile()的locals参数。写下这样的脚本:

def run_script():
    ret_value = 2
    return ret_value

script_ret = run_script()

在您的主脚本中:

script_locals = dict()
execfile("path/to/script", dict(), script_locals)
print(script_locals["script_ret"])

答案 2 :(得分:1)

xscript1函数的本地函数,因此在外部作用域中不可见。如果您将代码放在script1内的文件的顶层,它应该可以正常工作。