>> > 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.