MacOS X uses a special kind of decomposed UTF-8 to store filenames. If you need to e.g. read in filenames and write them to a “normal” UTF-8 file, you must normalize them :
filename = unicodedata.normalize('NFC', unicode(filename, 'utf-8')).encode('utf-8')