Eryk Sun <eryk...@gmail.com> added the comment:

> On Windows the extension of "python.exe" is "exe", not ".exe". 

FWIW, a file extension in Windows includes the dot. Trailing dots are stripped 
from filenames, so a file can't be named "python." because it's the same as 
just "python". (It's possible to prevent stripping trailing dots from a name by 
using a \\?\ literal path, but creating such a filename is a bad idea.) 

The shell API's file associations include the dot in the file extension. Also, 
the PATHEXT environment variable (i.e. the list of extensions that a CLI shell 
should try appending in a PATH search) includes the dot in each extension. In 
both of the latter cases, an extension that's just "." matches a filename that 
has no extension. In other words, the "." file extension can be used to 
associate files that have no extension with a ProgID (i.e. a programmatic 
identifier, which defines properties and actions for a file type), and adding 
"." to PATHEXT includes files that have no extension in a PATH search.

To clarify further, here are some results from PathCchFindExtension() [1]:

    import ctypes
    path = ctypes.OleDLL('api-ms-win-core-path-l1-1-0')
    s = (ctypes.c_wchar * 100)()
    ext = ctypes.c_wchar_p()

    >>> s.value = 'python.exe'
    >>> _ = path.PathCchFindExtension(s, len(s), ctypes.byref(ext))
    >>> ext.value
    '.exe'

    >>> s.value = '...exe'
    >>> _ = path.PathCchFindExtension(s, len(s), ctypes.byref(ext))
    >>> ext.value
    '.exe'

    >>> s.value = 'python.'
    >>> _ = path.PathCchFindExtension(s, len(s), ctypes.byref(ext))
    >>> ext.value
    '.'

---
[1] 
https://docs.microsoft.com/en-us/windows/win32/api/pathcch/nf-pathcch-pathcchfindextension

----------
nosy: +eryksun

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue34931>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to