从一个脚本返回值到另一个脚本
我有一个脚本,它会依次运行一个文件夹里的每个脚本:
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 个回答
1
x
这个变量只在 script1
这个函数里面有效,所以在外面是看不到它的。如果你把 script1
里面的代码放到文件的最上面,应该就能正常工作了。
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"])
8
我只是好奇有没有办法返回一些值,让父脚本可以访问这些数据。
这就是为什么你需要定义函数并返回值的原因。
脚本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()
这就是一个脚本如何使用另一个脚本的方法。