Communicating with a program using subprocess

Laurent Verweijen somelauw at gmail.com
Thu Jun 17 05:22:37 EDT 2010


    I have a file called increment.py as follows: 
        
        #!/usr/bin/python
        n = 0
        while True:
                n = int(raw_input(n)) + 1
        
        This is easy to understand, but I want to pipe it's input/output
        by another python program. (I will show what I am doing on the
        console to test it)

        >>> 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
        
        The problem is that I want to use communicate multiple times
        before closing the file.

    How could I achieve this




More information about the Python-list mailing list