栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 面试经验 > 面试问答

Python 3:os.walk()文件路径UnicodeEncodeError:'utf-8'编解码器无法编码:不允许代理

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 3:os.walk()文件路径UnicodeEncodeError:'utf-8'编解码器无法编码:不允许代理

在Linux上,文件名只是“一堆字节”,不一定以特定的编码进行编码。Python
3尝试将所有内容转换为Unipre字符串。通过这样做,开发人员想出了一种方案,可以将字节字符串转换为Unipre字符串,然后又将其转换回去而不会丢失,也不会知道原始编码。他们使用部分替代来编码“坏”字节,但是普通的UTF8编码器在打印到终端时无法处理它们。

例如,这是一个非UTF8字节的字符串:

>>> b'Cxc3N'.depre('utf8','surrogateescape')'Cudcc3N'

它可以与Unipre相互转换而不会丢失:

>>> b'Cxc3N'.depre('utf8','surrogateescape').enpre('utf8','surrogateescape')b'Cxc3N'

但是无法打印:

>>> print(b'Cxc3N'.depre('utf8','surrogateescape'))Traceback (most recent call last):  File "<stdin>", line 1, in <module>UnipreEnpreError: 'utf-8' prec can't enpre character 'udcc3' in position 1: surrogates not allowed

您必须弄清楚要使用非默认编码的文件名要做什么。也许只是将它们编码回原始字节,然后用未知替换将其解码。使用它进行显示,但保留原始名称以访问文件。

>>> b'Cxc3N'.depre('utf8','replace')C�N

os.walk
也可以采用字节字符串,并返回字节字符串而不是Unipre字符串:

for p,d,f in os.walk(b'.'):

然后,您可以根据需要进行解码。



转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/640177.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号