>> > Second, is there any way to have positional arguments listed before >> > optional ones using argparse? > I'm pretty sure there is, but I'd have to look it up, and I'm feeling > equally lazy atm. :P I've looked around some more, and I've come to the conclusion that it can't be done (without modifying the module's source code, anyway). Order doesn't matter to the actual parser, but the usage message will always list positional arguments last. Since the help messages can list positional arguments first and the parser can parse positional arguments first, I suppose I can live with it. As for my other question, I could use shlex.split(), but I don't know how to escape characters in it. subprocess.Popen(['python', 'C:\\path\\test.py']) works, but I have no idea how to make that tuple with shlex.split(). It always complains about invalid syntax or unescaped characters if I put a backslash in the string.