[Python-Dev] Windows: Remove support of bytes filenames in the os module?

Victor Stinner victor.stinner at gmail.com
Tue Feb 9 04:22:29 EST 2016


2016-02-09 1:37 GMT+01:00 eryk sun <eryksun at gmail.com>:
> For example, in codepage 932 (Japanese), it's an error if a lead byte
> (i.e. 0x81-0x9F, 0xE0-0xFC) is followed by a trailing byte with a
> value less than 0x40 (note that ASCII 0-9 is 0x30-0x39, so this is not
> uncommon). In this case the ANSI API substitutes the default character
> for Japanese, '・' (U+30FB, Katakana middle dot).
>
>     >>> locale.getpreferredencoding()
>     'cp932'
>     >>> open(b'\xe05', 'w').close()
>     >>> os.listdir('.')
>     ['・']
>     >>> os.listdir(b'.')
>     [b'\x81E']
>
> All invalid sequences get mapped to '・', which roundtrips as
> b'\x81\x45', so you can't reliably create and open files with
> arbitrary bytes paths in this locale.

Oh, and I forgot to ask: what is your filesystem? Is it the same
behaviour for NTFS, FAT32, network shared directories, etc.?

Victor


More information about the Python-Dev mailing list