On 2008-06-18, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > I have a Python script which is used to load data into a database. Up to > now this script has been run by customers from the Windows command > prompt using "python edg_loader.pyc". Any error messages generated are > written to a log file. A project team working in the same company as me > here would like to use this loading utility. They write UI applications > for Windows using Java. They were able to launch the Python script from > within Java by creating a Process using Java ProcessBuilder class. > However, the way the error handling is currently implemented isn't > really suitable for use in a UI application. As I'm sure you can > appreciate it's not really feasible to tell users of a UI program to > keep checking the log files while the loading is underway!!. Ideally > they would like the Python loading utility to return an error code and > error message - the error message could then be displayed on a message > box on the UI.
The first thing to do is decide whether this is a Java problem, a Python problem, or a OS problem. Then post the question in the appropiate forum. One simple experiment may be to write a C function that returns a non-zero exit code, and run that as job. > I seem to be having problems implementing this. I tried using the > sys.exit() method in my script and passed non -zero values. However the > value wasn't picked up the by Java Process.exitValue() method - it kept What did the OS say? Run a program like below in OS ('python x.py'), then query the OS about the exit code of the program. In that way, you can narrow down your search. > picking up 0. On investigation it turned out that the exit value being > read is from python.exe process, not from the Python script. Is there > any way I can obtain the return value of a python script from a Java This is not what I see happening here: x.py: import sys sys.exit(138) % python2.4 x.py % echo $? 138 as you can see, the mechanism works at my Linux system. > Java Process.getErrorSteam() method. > However I would really like to get the return codes working if possible > and would appreciate any suggestions on how to implement this. I'd suggest to first find out where in the Java->OS->Python->OS->Java chain things go wrong. As for how to handle a child-process from Java, try asking in a Java news group. Sincerely, Albert -- http://mail.python.org/mailman/listinfo/python-list