python中非英文文件名的文件操作

python中非英文文件名的文件操作,python,windows,unicode,python-unicode,Python,Windows,Unicode,Python Unicode,我们中的许多人可能会面临这个问题,但我在unicode处理方面很差。问题是: 这是一个代码片段,我正在尝试执行.exe文件并检查文件路径是否存在,但运气不佳: #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 =

我们中的许多人可能会面临这个问题,但我在unicode处理方面很差。问题是: 这是一个代码片段,我正在尝试执行.exe文件并检查文件路径是否存在,但运气不佳:

#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 )
我总是得到“未找到路径”的结果。我尝试使用path.decode('utf-8'):
但脚本将文件路径读取为:

C:\Test\BitComet_????_1_25.exe    
由于这个文件路径不存在,它将转到else分支

请给我一个提示来处理这个unicode问题,如果我能够向用户显示cmd或log文件中的文件路径,是否会更好


如果这是一篇重复的文章,我深表歉意。

Windows路径使用UTF-16编码。Python可以为您处理此问题,只需将unicode路径传递给
os.walk()
,您将得到unicode结果:

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

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

太棒了!当我试图打印路径时,它又出现了一个小问题:UnicodeEncodeError:“charmap”编解码器无法对55-58位置的字符进行编码:字符映射到如何处理?这是因为Windows控制台在打印unicode时很糟糕。非常感谢分享链接。