os.lisdir, gets unicode, returns unicode... USUALLY?!?!?

gabor gabor at nekomancer.net
Fri Nov 17 11:43:09 CET 2006


Martin v. Löwis wrote:
> gabor schrieb:
>> i also recommend this approach.
>>
>> also, raising an exception goes well with the principle of the least
>> surprise imho.
> 
> Are you saying you wouldn't have been surprised if that had been
> the behavior? 


yes, i would not have been surprised. because it's kind-of expected when 
dealing with input, that malformed input raises an unicode-exception.
and i would also expect, that if os.listdir completed without raising an 
exception, then the returned data is correct.

> How would you deal with that exception in your code?

depends on the application. in the one where it happened i would just 
display an error message, and tell the admins to check the 
filesystem-encoding.

(in other ones, where it's not critical to get the correct name, i would 
probably just convert the text to unicode using the "replace" behavior)

what about using flags similar to how unicode() works? strict, ignore, 
replace and maybe keep-as-bytestring.

like:
os.listdir(dirname,'strict')

i know it's not the most elegant, but it would solve most of the 
use-cases imho (at least my use-cases).

gabor



More information about the Python-list mailing list