Я не нашел этого на моем Ubuntu box с файловой системой ext3. Итак, я полагаю, сначала убедитесь, что файловая система поддерживает имена файлов в юникоде, иначе я считаю, что поведение не определено?
>>> os.path.supports_unicode_filenames
True
Если это правда, вы должны быть в состоянии передавать строки юникода непосредственно в вызовы os.path:
>>> print u'\xf6'
ö
>>> target_dir = os.path.join(os.getcwd(), u'\xf6')
>>> print target_dir
C:\Python26\ö
>>> os.path.exists(os.path.join(target_dir, 'test.txt'))
True
Вам следует взглянуть на QString.toUtf8 и, возможно, передать возвращаемое значение через os.path.normpath, прежде чем передать его в os.path.join
Удачи!
нм, он отлично работает и на моем Ubuntu Box ...
>>> os.path.supports_unicode_filenames
False
>>> target_dir = os.path.join(os.getcwd(), u'\xf6')
>>> print target_dir
/home/clayg/ö
>>> os.path.exists(os.path.join(target_dir, 'test'))
True