Peter Otten <__pete...@web.de> wrote: > tinn...@isbd.co.uk wrote: > > > I have a small python program that uses the pyexiv2 package to view > > exif data in image files. > > > > I've hit a problem because I have a filename with accented characters > > in its path and the pyexiv2 code traps as follows:- > > > > Traceback (most recent call last): > > File "/home/chris/bin/eview.py", line 87, in <module> > > image = pyexiv2.ImageMetadata(filepath) > > File "/usr/lib/python2.7/dist-packages/pyexiv2/metadata.py", line > > 65, in __init__ > > self.filename = filename.encode(sys.getfilesystemencoding()) > > UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position > > 38: ordinal not in range(128) > > > > Without digging deep into pyexiv2 is there any way I can work around > > this error? The accented characters aren't in the filename itself, > > they're in the directory path. I.e. it's:- > > > > ./1977/04 April/#09 - Monaco, inc. Musée de Poupée/p77_08_011.jpg > > > > I could of course remove the accents but I'd much prefer not to do so. > > Try passing a unicode filename. A quickfix: > > filepath = filepath.decode(sys.getfilesystemencoding()) > image = pyexiv2.ImageMetadata(filepath) > ... and this solution works too, thank you.
> If you are using os.listdir() or glob.glob() to produce the filepath -- they > will return unicode filenames if you invoke them with a unicode argument. > -- Chris Green -- http://mail.python.org/mailman/listinfo/python-list