pythonpython-3.xos.system

return value from one python script to another


I have two files: script1.py and script2.py. I need to invoke script2.py from script1.py and return the value from script2.py back to script1.py. But the catch is script1.py actually runs script2.py through os.

script1.py:

import os
print(os.system("script2.py 34"))

script2.py

import sys
def main():
    x="Hello World"+str(sys.argv[1])
    return x

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

As you can see, I am able to get the value into script2, but not back to script1. How can I do that? NOTE: script2.py HAS to be called as if its a commandline execution. Thats why I am using os.


Solution

  • Ok, if I understand you correctly you want to:

    I'll recommend using subprocess module. Easiest way would be to use check_output() function.

    Run command with arguments and return its output as a byte string.

    Sample solution:

    script1.py

    import sys
    import subprocess
    s2_out = subprocess.check_output([sys.executable, "script2.py", "34"])
    print s2_out
    

    script2.py:

    import sys
    def main(arg):
        print("Hello World"+arg)
    
    if __name__ == "__main__":
        main(sys.argv[1])