python 2.7.12 on Linux behaving differently than on Windows

eryk sun eryksun at
Mon Dec 5 13:54:30 EST 2016

On Mon, Dec 5, 2016 at 4:03 PM, Paul  Moore <p.f.moore at> wrote:
> 2. On Windows, the OS primitive takes a command line. The application is
> responsible for splitting it into arguments, if it wants to. Most do, for
> compatibility with the normal argv convention inherited via C from Unix. Many
> programs let the C runtime do that splitting for them - I don't recall if Python
> does, or if it implements its own splitting these days.

Windows Python uses the CRTs parsed argument list. python.exe simply
uses the wmain entry point:

    wmain(int argc, wchar_t **argv)
        return Py_Main(argc, argv);

pythonw.exe uses the wWinMain entry point and the CRT's __argc and
__wargv variables:

    int WINAPI wWinMain(
        HINSTANCE hInstance,      /* handle to current instance */
        HINSTANCE hPrevInstance,  /* handle to previous instance */
        LPWSTR lpCmdLine,         /* pointer to command line */
        int nCmdShow              /* show state of window */
        return Py_Main(__argc, __wargv);

python[w].exe doesn't link in wsetargv.obj, so it doesn't support
wildcard expansion.

More information about the Python-list mailing list