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

> os.stat() seems to be striping significant trailing spaces off 
> the path argument

The Windows file API normalizes paths to replace forward slashes with 
backslashes; resolve relative paths and "." and ".." components; strip trailing 
spaces and dots from the final component; and map reserved DOS device names in 
the final component of non-UNC paths to device paths (e.g. "C:/Temp/con " -> 
r"\\.\con").

Use a "\\?\" extended device path to bypass normalization, e.g. 
r"\\?\C:\Program Files     ". Because an extended path doesn't get normalized 
in an open or create context, it should only use backslash as the path 
separator and should be fully qualified, without any "." and ".." components. 
Also, a non-device UNC path has to explicitly use the "UNC" device, e.g. 
"//server/share/spam... " -> r"\\?\UNC\server\share\spam... ".

That said, I strongly advise against using an extended path to create or rename 
files to use reserved DOS device names or trailing dots and spaces. Such 
filenames will be inaccessible by most applications.

----------
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed
versions: +Python 3.9 -Python 3.6, Python 3.7

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

Reply via email to