i would like to start a python file (.py) with arguments and receive the output of it after it is finished.
Step 1. Don't use subprocess
. You're doing it wrong.
Step 2. Read the Python file you want to run. Let's call it runme.py
.
Step 3. Read it again. If it's competently written, there is a block of code that starts if __name__ == "__main__":
. What follows is the "external interface" to that file. Since you provided no information in the question, I'll assume it looks like this.
if __name__ == "__main__":
main()
Step 4. Read the "main" function invoked by the calling script. Since you provided no information, I'll assume it looks like this.
def main():
options, args = parse_options()
for name in args:
process( options, file )
Keep reading to be sure you see how parse_options
and process
work. I'll assume parse_options
uses optparse
.
Step 5. Write your "calling" script.
import runme
import sys
import optparse
options = options= optparse.Values({'this':'that','option':'arg','flag':True})
with open( "theoutput.out", "w" ) as results:
sys.stdout= results
for name in ('some', 'list', 'of', 'arguments' ):
runme.process( options, name )
This is the correct way to run a Python file from within Python.
Actually figure out the interface for the thing you want to run. And run it.