首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python,UTF-8文件系统,iso-8859-1文件

Python,UTF-8文件系统,iso-8859-1文件
EN

Stack Overflow用户
提问于 2012-07-27 13:53:32
回答 2查看 1.8K关注 0票数 0

我有一个用Python2.7编写的应用程序,它使用os.walk从硬盘中读取用户的文件。

应用程序需要一个UTF-8系统区域设置(我们在启动之前检查env变量),因为我们处理带有Unicode字符的文件(例如,带有艺术家名称的音频文件),并且希望确保我们可以用正确的文件名将这些文件保存到文件系统中。

我们的一些用户有UTF-8地区(因此是一个UTF-8 fs),但仍然设法将ISO-8859-1文件存储在他们的驱动器上。当我们的代码尝试os.walk()这些目录时,当我们试图使用UTF-8解码这个序列的ISO-8859-1字节时,它会抛出一个异常,这会造成问题。

因此,我的问题是,如何让python忽略这个文件并转移到下一个文件,而不是中止整个os.walk()。我应该只转我自己的os.walk()函数吗?

编辑:到目前为止,我们一直在告诉我们的用户使用卷积linux命令来更正他们的文件名,但是许多用户有不同类型的编码(8859-1,8859-2等等),而使用卷积of要求用户在对每个文件单独运行卷积之前对哪些文件进行有一定的猜测。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-27 14:01:28

请阅读Unicode文件名,是Python的一部分。最重要的是,文件系统编码不一定与终端中当前的LANG设置相同。

具体来说,os.walk是建立在os.listdir之上的,因此它将在unicode和8位字节之间切换,这取决于您是否给它一个unicode路径。

将其改为8位路径,您的代码将正常工作,然后根据需要从UTF-8或ISO 8859-1解码。

票数 3
EN

Stack Overflow用户

发布于 2012-08-06 21:10:19

使用字符编码检测,python的chardet模块可以很好地确定实际的编码。“视情况而定”--你要么知道编码,要么就猜出来。如果你猜错了,至少你试过了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11689223

复制
相关文章

相似问题

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