On 2008-02-27, Michael Goerz <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I would like to raise an exception any time a subprocess tries to read 
> from STDIN:
>
> latexprocess = subprocess.Popen( \
>          'pdflatex' + " " \
>           + 'test' + " 2>&1", \
>          shell=True, \
>          cwd=os.getcwd(), \
>          env=os.environ, \
>          stdin=StdinCatcher() # any ideas here?
>      )
>
> An exception should be raised whenever the pdflatex process
> reads from STDIN... and I have no idea how to do it. Any suggestions?
>
> Thanks,
> Michael

How about with a file-like object? I haven't tested this with subprocess
so you might want to read the manual on files if it doesn't work[1].

        import sys 

        class ErrorFile(object):
                def _error(self, *args, **kwargs):
                        raise AssertionError("Illegal Access")

                def _noop(self, *args, **kwargs):
                        pass

                close = flush = seek = tell = _noop
                next = read = readline = readlines = xreadlines = tuncate = 
_error
                truncate = write = writelines = _error

        sys.stdin = ErrorFile()
        print raw_input("? ")

Ian

[1] http://docs.python.org/lib/bltin-file-objects.html

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to