i18n: looking for expertise

"Martin v. Löwis" martin at v.loewis.de
Tue Mar 8 03:29:27 EST 2005


klappnase wrote:
> I am using python-2.3.4 and get unicode errors:
> 
> 
>>>>f = os.path.join(u'/home/pingu/phonoripper', u'\xc3\u20ac')
>>>>os.path.isfile(f)
> 
> True
> 
>>>>os.access(f, os.R_OK)
> 
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> UnicodeEncodeError: 'ascii' codec can't encode characters in position
> 24-25: ordinal not in range(128)

That's apparently a bug in os.access, which doesn't support Unicode file
names. As a work around, do

def access(name, mode, orig=os.access):
     try:
        return orig(name, mode)
     except UnicodeError:
        return orig(name.encode(sys.getfilesystemencoding(), mode))
os.access=access

Apparently, access is used so rarely that nobody has noticed yet (or
didn't bother to report). os.path.isfile() builds on os.stat(), which
does support Unicode file names.

Regards,
Martin



More information about the Python-list mailing list