У меня возникла эта проблема при использовании os.walk
в некоторых каталогах с китайскими (юникодными) именами. Я реализовал функцию walk непосредственно следующим образом, которая отлично работала с именами dir / file в unicode.
import os
ft = list(tuple())
def walk(dir, cur):
fl = os.listdir(dir)
for f in fl:
full_path = os.path.join(dir,f)
if os.path.isdir(full_path):
walk(full_path, cur)
else:
path, filename = full_path.rsplit('/',1)
ft.append((path, filename, os.path.getsize(full_path)))