Why exception from os.path.exists()?
On Tue, Jun 5, 2018 at 3:28 PM, Peter J. Holzer <hjp-python at hjp.at> wrote:
> Now, if MacOS uses something like that, this is a different matter.
> Presumably (since HFS+ is a native file system) the kernel deals with
> NUL characters in a straightforward manner. It might even have a
> (non-POSIX) API to expose such filenames. Even if it hasn't, presumably
> the mapping back and forth is done in a very low level library used by
> all (or most) of the applications, so that they all show consistently
> the same filename.
The Linux subsystem in Windows 10 has to use character escaping. The
root file system is stored in the NTFS directory
"%LocalAppData%\Packages\<distro package name>\LocalState\rootfs". It
escapes invalid NTFS characters (as implemented by the ntfs.sys
driver) using the hex code prefixed by "#". Thus "#" itself has to be
escaped as "#0023". For example:
$ touch '\*?<>|#'
$ ls '\*?<>|#'
With CMD in the above directory, we can see the real filename:
> dir /b #*