# MkPyCmd.py # Copyright 2005 by James M Jinkins --- Released to the Public Domain. # email address: jim -dot_ jinkins -at_ comports -dot_ com progDoc = r"""MkPyCmd.py generates a command file to execute a Python program. The windows command file will have the same filename as the Python program, but will have a '.cmd' extension instead of '.py.. It will pass its command line arguments to the Python program. Note: usage: python [py_path\]python_program [cmd_path] where py_path Optional path to the python program. Default is the current directory. python_program Python program. Since the extension must be .py, it is not required. cmd_path Optional path to the generated command file. Default is the current directory. Generate it in a directory in the PATH environment variable. The command python C:\PyLib\MkPyCmd.py C:\PyLib\my_prog C:\cmd generates file C:\cmd\my_prog.cmd, which contains this line: python "C:\PyLib\my_prog.py" %* """ import os import sys def displayErrMsgExit(msg = ''): print progDoc if msg: print "\nError: %s" % msg sys.exit(1) if (len(sys.argv) < 2 or sys.argv[1].lower() == '-h' or sys.argv[1].lower() == '--help'): displayErrMsgExit() if len(sys.argv) > 3: displayErrMsgExit("Too many command line arguments") pyProgram = sys.argv[1] pyProgPath = os.path.abspath(pyProgram) pyPath, pyFilespec = os.path.split(pyProgPath) pyFilename, pyExt = os.path.splitext(pyFilespec) if pyExt.lower() == '.py': cmdFilespec = pyFilename + '.cmd' else: cmdFilespec = pyFilespec + '.cmd' pyProgPath += '.py' if not os.path.isfile(pyProgPath): displayErrMsgExit("python_program file '%s' not found" % pyProgramPath) if len(sys.argv) > 2: if not os.path.isdir(sys.argv[2]): displayErrMsgExit("cmd_path arg '%s' is not a directory" % sys.argv[2]) cmdPath = os.path.join(sys.argv[2], cmdFilespec) else: cmdPath = cmdFilespec f = open(cmdPath, 'w') print >>f, 'python "%s" %%*' % pyProgPath f.close()