I have the following script that will run each script (sequentially) in a directory:
import os
directory = []
for dirpath, dirnames, filenames in os.walk(\
You can use the locals argument of execfile(). Write the scripts like this:
def run_script():
ret_value = 2
return ret_value
script_ret = run_script()
And in your main script:
script_locals = dict()
execfile("path/to/script", dict(), script_locals)
print(script_locals["script_ret"])
I'm just curious if there is a way to return values so that the parent script can access the data.
This is why you define functions and return values.
Script 1 should include a function.
def main():
all the various bits of script 1 except the import
return x
if __name__ == "__main__":
x= main()
print( x )
Works the same as yours, but now can be used elsewhere
Script 2 does this.
import script1
print script1.main()
That's the way one script uses another.
x
is local to the script1
function, so it's not visible in the outer scope. If you put the code inside script1
at the top level of the file, it should work.