On Sat, Apr 1, 2017 at 5:38 PM, Steve D'Aprano <steve+pyt...@pearwood.info> wrote: > Or, for Windows, I suppose a dozen or so more characters: > > https://support.office.com/en-us/article/Invalid-characters-in-file-or-folder-names-or-invalid- > file-types-in-OneDrive-for-Business-64883A5D-228E-48F5-B3D2-EB39E07630FA
It's more than a dozen reserved characters. If we're strictly following the file-system runtime library conventions, then all ASCII control characters (0-31) are reserved as well as pipe; the path separators slash, backslash, and colon (named streams); and the wildcard characters asterisk, question mark, less than, greater than, and double quote. Except for backslash, which is reserved by the object manager, these reservations are imposed by the FsRtl, and in theory I think a custom file system *could* ignore this. This would require using the \\?\ prefix and, in some cases, it would also require applications to use the native NT API in order to avoid DOS conventions. It would also need some private escape sequence to tell the file system, for example, that an asterisk in a directory listing filter isn't supposed to be a wildcard. These constraints would be too cumbersome, confusing, and unworkable in general, so the system's use would probably need to be restricted to a specific set of applications or an NT subsystem that can hide the implementation details. For a real-world example, the Linux subsystem in Windows 10 (WSL) stores the POSIX namespace files that it creates using regular files in a hidden folder in the user's profile. It has to escape characters that are reserved: $ touch 'test*?<>":\|.txt' C:\>dir /b %localappdata%\lxss\home\%username%\test* test#002A#003F#003C#003E#0022#003A#005C#007C.txt -- https://mail.python.org/mailman/listinfo/python-list