Colin J. Williams wrote:
Below is a test script:# tSubProcess.py import subprocess import sys try: v= subprocess.Popen('ftype py=C:\Python25\Python.exe') except WindowsError: print(sys.exc_info())
I'm assuming that you've previously done something like this: assoc .py=py and are now trying to do this: ftype py=c:\python25\python.exe You've got a few issues to resolve there. If you're using a string containing a backslash (basically, any Windows path) you need to tell Python to treat the backslash as a backslash and not as an escape character. Simplest way to do this is to prefix the string with r for raw: r"ftype py=c:\python25\python.exe" In this case it wouldn't matter too much because \p isn't a recognised escape sequence. But as soon as you hit, say, "c:\files" you'll be in trouble because \f is the escape sequence for ASCII 12. OK. The next thing is that ftype is not actually an .exe in its own right: it's provided by the command shell (cmd.exe or whatever). That means you have to ask the subprocess module to call the shell on your behalf: subprocess.Popen (r"...", shell=True) Finally, for simple do-it-and-finish subprocess calls like yours, it's generally advantageous to use the convenience function .call, and pass the params as a list of params which avoid other issues to do with embedded spaces. (Usually: there is an outstanding bug there). So... import subprocess subprocess.call (["ftype", r"py=c:\python25\python.exe"], shell=True) TJG -- http://mail.python.org/mailman/listinfo/python-list
