Capturing errors raised by other scripts ?

northof40 shearichard at gmail.com
Fri Feb 19 21:39:57 EST 2010


I'm using the subroutine module to run run python script A.py from
B.py (this is on windows fwiw).

A.py is not my script and it may raise arbitary errors before exiting.
How can I determine what's happened before A.py exited ?

To simulate this I've got this script (which is meant to simulate
A.py):

class customError(Exception):
	def __init__(self, value):
		self.value = value
	def __str__(self):
		return repr(self.value)

try:
	raise customError(2*2)
except customError as e:
	print 'Custom exception occurred, value:', e.value


I then run my A.py like this :

>>> fdOut, fOut = tempfile.mkstemp(suffix='.txt', prefix='AOut-')
>>> fdErr, fErr = tempfile.mkstemp(suffix='.txt', prefix='AErr-')
>>> try:
...     pathtojob="python.exe A.py"
...     p = subprocess.Popen(pathtojob, stderr=fdErr, stdout=fdOut)
... except:
...     print "bad stuff happened"
...

When I do this I the exception handler is not fired and the text
"Custom exception occurred, value: 4" ends up in the stdout file.

I'd really like it to end up in stderr because then I could say
"anything in stderr ? then ignore the output and flag an error".

I don't want to have to parse the stdout for error like messages and I
can't make changes to A.py.

I'm sure there's a better way to do this - can anyone offer some
advice ?

thanks

Richard.




More information about the Python-list mailing list