I’m writing a script that has to move some file around, but unfortunately it doesn’t seem os.path plays with internationalization very well. When I have files named in Hebrew, there are problems. Here’s a screenshot of the contents of a directory:

(source: thegreenplace.net)
Now consider this code that goes over the files in this directory:
files = os.listdir('test_source') for f in files: pf = os.path.join('test_source', f) print pf, os.path.exists(pf)
The output is:
test_source\ex True test_source\joe True test_source\mie.txt True test_source\__()'''.txt True test_source\????.txt False
Notice how os.path.exists thinks that the hebrew-named file doesn’t even exist? How can I fix this?
ActivePython 2.5.2 on Windows XP Home SP2
Hmm, after some digging it appears that when supplying os.listdir a unicode string, this kinda works:
===>
Some important observations here:
os.listdir(and similar functions, likeos.walk) should be passed a unicode string in order to work correctly with unicode paths. Here’s a quote from the aforementioned link:printwants an ascii string, not unicode, so the path has to be encoded to ascii.