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