[issue3187] os.listdir can return byte strings

Benjamin Peterson report at bugs.python.org
Fri Aug 22 01:35:52 CEST 2008


Benjamin Peterson <musiccomposition at gmail.com> added the comment:

On Thu, Aug 21, 2008 at 6:31 PM, Guido van Rossum
<report at bugs.python.org> wrote:
>
> Guido van Rossum <guido at python.org> added the comment:
>
> So shutil should be fixed to pass a bytes value to os.listdir().  But
> then os.remove() should be fixed to accept bytes as well.  This is the
> crux I believe: on Unix at least, syscall wrappers should accept bytes
> for filenames.  And this would then have to be extended to things like
> the functions in os.path, and we'd need bytes versions of os.sep and
> os.altsep...  This sounds like a good project for 3.1.
>
> I do not accept an os.listdir() that raises an error because one
> filename cannot be decoded.  It sounds like using errors='replace' is
> also wrong -- so the only solution is for os.listdir() to skip files it
> cannot decode.  While this doesn't help for rmtree(), it is better than
> errors='replace' for code that descends into the tree looking for files
> matching a pattern or other property.  So I propose this as a patch for 3.0.

As much as this maybe the right idea, I don't like the idea of
silently losing the contents of a directory. That's asking for
difficult to discover bugs. Could Python emit a warning in this case?
>
> The callback variant is too complex; you could write it yourself by
> using os.listdir() with a bytes argument.  This also applies to
> proposals like passing optional encoding and errors arguments to
> os.listdir().
>
> _______________________________________
> Python tracker <report at bugs.python.org>
> <http://bugs.python.org/issue3187>
> _______________________________________
>

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue3187>
_______________________________________


More information about the Python-bugs-list mailing list