Well, apparently I fried my brain trying to sort this out. There is a typo in my example code in the post but not in my real program. (I know it is a no-no when asking help on c.l.py but I simplified some details from the real code in order not to confuse the issues. Probably backfired by this point.) Below is the post with the error fixed and one sentence added (to clarify why the error in my original post really was not the problem). Thanks for any advice. --- I'm trying to invoke a Java command-line program from my Python program on Windows XP. I cannot get the paths in one of the arguments to work right.
The instructions for the program describe the following for the command-line arguments: java -jar sforcedataloader.jar -Dsalesforce.config.dir=CONFIG_DIRECTORY They also give an example: java -Dsalesforce.config.dir=c:\config -jar sforcedataloader.jar If I type the example above at the cmd.exe command line the thing works (assuming I have the config file in c:\config). What doesn't work is these two lines: cmd = r'java -jar sforcedataloader.jar -Dsalesforce.config.dir=c:\config' os.system(cmd) I have tried (not entirely systematically but pretty exhaustively) every combination of backslashes in the cmd string, e.g.: -Dsalesforce.config.dir=c\:\\config -Dsalesforce.config.dir=c:\\config -Dsalesforce.config.dir=c\\:\config -Dsalesforce.config.dir=c\\:\\config etc. No matter what I do, the program outputs that it cannot find the config file. *For at least one variation of the cmd string, I can print the value of cmd and copy/paste it to the command line and the java program works successfully, while for this same cmd string the java program fails when invoked from Python.* I cannot tell whether this is a java thing (why are there three different styles for argument on the same command line? In addition to "-jar xxx" and "-Dxxx=yyy" you can also put "xxx=yyy" for some options... wth?), Windows lame cmd.exe shell (is that program invoked by Python's os.system function?), or something else that is messing up. It drivin me crazy though. (Come to think of it, Windows paths have been a persistent thorn in my side for two years of Python development at my company.) Anybody have any suggestions? p.s. 1. I would like to qualify the claim above that the example works at the command-line. I'm not completely certain exactly which form of invocation was successful at the command line, but at least one of them was and that one definitely didn't work from Python. 2. I have a work-around available to me, which is that the program will look for the configuration file in the current directory if the command-line option isn't specified. I'd much rather be able to specify a directory on the command line, so that I can have multiple simultaneous invocations, and so that I can have the configuration file not be in the directory where the Python program is, or alternatively not have to change my directory (since I don't fully appreciate the implications for other parts of my program - this thing runs asynchronously.) -- http://mail.python.org/mailman/listinfo/python-list