Running a program from another program.

Laurent Verweijen somelauw at gmail.com
Thu Jun 17 15:13:38 EDT 2010


I have a program called increment.py as follows: 
        
        #!/usr/bin/python
        n = 0
        while True:
                n = int(raw_input(n)) + 1
        
This is probably very easy to understand, but I want to run this program
from another python program.
Below is an attempt

        >>> from subprocess import *
        >>> p = Popen(["python", "increment.py"], stdin=PIPE,
stdout=PIPE)
        >>> p.communicate("5")
        Traceback (most recent call last):
          File "increment.py", line 4, in <module>
            n = int(raw_input(n)) + 1
        EOFError: EOF when reading a line
        ('06', None)
        >>> p.communicate("7")
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
          File "/usr/lib/python2.6/subprocess.py", line 701, in
communicate
            return self._communicate(input)
          File "/usr/lib/python2.6/subprocess.py", line 1184, in
_communicate
            self.stdin.flush()
        ValueError: I/O operation on closed file

How do I make sure the inputstream stays open after the first call to
communicate?





More information about the Python-list mailing list