首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将python文件名转换为unicode

将python文件名转换为unicode
EN

Stack Overflow用户
提问于 2009-06-27 06:17:20
回答 5查看 27.1K关注 0票数 16

我使用的是适用于Windows的python 2.6。

我使用os.walk读取文件树。文件名中可能包含非7位字符(例如,德语"ae“)。这些内容以Pythons内部字符串表示形式进行编码。

我正在使用Python库函数处理这些文件名,但由于编码错误而失败。

如何将这些文件名转换为正确的(unicode?)python字符串?

我有一个文件"d:\utest\ü.txt“。将路径作为unicode传递不起作用:

代码语言:javascript
复制
>>> list(os.walk('d:\\utest'))
[('d:\\utest', [], ['\xfc.txt'])]
>>> list(os.walk(u'd:\\utest'))
[(u'd:\\utest', [], [u'\xfc.txt'])]
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-06-27 06:34:38

如果您将Unicode字符串传递给os.walk(),您将获得Unicode结果:

代码语言:javascript
复制
>>> list(os.walk(r'C:\example'))          # Passing an ASCII string
[('C:\\example', [], ['file.txt'])]
>>> 
>>> list(os.walk(ur'C:\example'))        # Passing a Unicode string
[(u'C:\\example', [], [u'file.txt'])]
票数 46
EN

Stack Overflow用户

发布于 2011-05-15 15:48:06

我正在寻找Python 3.0+的解决方案。会把它放在这里以防别人需要它。

代码语言:javascript
复制
rootdir = r'D:\COUNTRY\ROADS\'
fs_enc = sys.getfilesystemencoding()
for (root, dirname, filename) in os.walk(rootdir.encode(fs_enc)):
    # do your stuff here, but remember that now
    # root, dirname, filename are represented as bytearrays
票数 6
EN

Stack Overflow用户

发布于 2015-05-15 15:14:49

代码语言:javascript
复制
os.walk(unicode(root_dir, 'utf-8'))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1052225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档