列出目录时出现Python UnicodeDecodeError

2024-04-24 11:10:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python2.7中构建一个目录中所有文件的列表,但不管我做什么,最终都会出现UnicodeDecodeError。你知道吗

我的代码是: 目录列表=操作系统列表目录(目录)

for entry in dirList:
    #all 3 tested seperatly
    fullPath = directory+'/'+entry#throws exception
    entry = entry.encode('ascii', 'ignore')#throws exception
    entry = unicode(entry.strip(codecs.BOM_UTF8), 'utf-8')#throws exception

我最后犯了一个错误: UnicodeDecodeError:'ascii'编解码器无法解码位置12中的字节0xc3:序号不在范围内(128)

entry中有非ascii字符时,总是引发异常。它通常死在“Elavhõbe”上。当我用print entry打印出来时,它显示Elavhobe(注意更改了的'o')。你知道吗

奇怪的是,每当我尝试通过SSH连接时,我就可以将它们与directory+'/'+entry放在一起,而且我从来没有得到异常。你知道吗

我的最终目标是构建一个完整的目录路径并将其传递给os.path.isdir(fullPath)。你知道吗


Tags: 文件代码in目录列表forasciiexception
1条回答
网友
1楼 · 发布于 2024-04-24 11:10:18

好吧,我终于找到了解决办法。因为我对python不是很在行,所以我不确定它到底是如何工作的,只知道它是如何工作的。你知道吗

我将此添加到文件的顶部:

import sys

#reload sys and set the default encoding to utf-8
#this will avoid errors when running as host server on server startup
reload(sys)
sys.setdefaultencoding('utf-8')

然后我将我的条目编码为ascii码,如下所示:

entry = entry.encode('ascii', 'ignore')

然后一切正常。希望有一天这能帮上忙。你知道吗

相关问题 更多 >