Get output of python script from within python script

proc = subprocess.Popen(['python', 'printbob.py',  'arg1 arg2 arg3 arg4'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print proc.communicate()[0]

There must be a better way of doing it though, since the script is also in Python. It's better to find some way to leverage that than what you're doing.


This is the wrong approach.

You should refactor printbob.py so that it can be imported by other python modules. This version can be imported and called from the command-line:

#!/usr/bin/env python

import sys

def main(args):
    for arg in args:
        print(arg)

if __name__ == '__main__':
    main(sys.argv)

Here it is called from the command-line:

python printbob.py one two three four five
printbob.py
one
two
three
four
five

Now we can import it in getbob.py:

#!/usr/bin/env python

import printbob

printbob.main('arg1 arg2 arg3 arg4'.split(' '))

Here it is running:

python getbob.py 
arg1
arg2
arg3
arg4

Tags:

Python