File operation on non-english file name in python

python, python-unicode, unicode, windows

Solution

Windows paths are encoding in UTF-16. Python can handle this for you, simply pass a unicode path to `os.walk()` and you'll get Unicode results instead:

filePath = u'C:\\Test\\'  # Test folder haveing file BitComet_比特彗星_1_25.exe

for (adir, dirs, files) in os.walk(filePath):

Problem

This issue may be faced by many of us but I am poor in unicode handling. Here is the issue: this is a code snippet, I am trying to execute the .exe file and checking whether the file path exists or not but no luck : ``` #Python 2.6.7 filePath = 'C:\\Test\\' # Test folder haveing file BitComet_比特彗星_1_25.exe for (adir, dirs, files) in os.walk(rootdir): for f in files: path = os.path.join(adir,f) if os.path.exists(path ): print'Path Found',path #Extract file #logging(path ) else: print 'Path Not Found' #logging(path ) ``` I am always getting the result 'Path Not Found'. I tried to use path.decode('utf-8'): But the script read the file path as: ``` C:\Test\BitComet_????_1_25.exe ``` And since this file path doesn't exist, it goes to the else branch. Please give me a hint to handle this unicode issue and whether its better if I am able to show user to show the file path on cmd or in log file. I apologize if this seems to be a duplicate post.

Original source

Related problems