os.lisdir, gets unicode, returns unicode... USUALLY?!?!?
gabor
gabor at nekomancer.net
Fri Nov 17 05:30:28 EST 2006
Marc 'BlackJack' Rintsch wrote:
> In <mailman.294.1163721712.32031.python-list at python.org>, Jean-Paul
> Calderone wrote:
>
>>> How would you propose listdir should behave?
>> Umm, just a wild guess, but how about raising an exception which includes
>> the name of the file which could not be decoded?
>
> Suppose you have a directory with just some files having a name that can't
> be decoded with the file system encoding. So `listdir()` fails at this
> point and raises an exception. How would you get the names then? Even the
> ones that *can* be decoded? This doesn't look very nice:
>
> path = u'some path'
> try:
> files = os.listdir(path)
> except UnicodeError, e:
> files = os.listdir(path.encode(sys.getfilesystemencoding()))
> # Decode and filter the list "manually" here.
i agree that it does not look very nice.
but does this look nicer? :)
path = u'some path'
files = os.listdir(path)
def check_and_fix_wrong_filename(file):
if isinstance(file,unicode):
return file
else:
#somehow convert it to unicode, and return it
files = [check_and_fix_wrong_filename(f) for f in files]
in other words, your opinion is that the proposed solution is not
optimal, or that the current behavior is fine?
gabor
More information about the Python-list
mailing list