错误UnicodeDecodeError: 'ascii' codec can't decode byte

来源:互联网 发布:hadoop编程 编辑:程序博客网 时间:2024/05/17 08:49

用read()读取txt文件时遇到的错误
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xa1 in position 1022: ordinal not in range(128)

源代码如下:

    with open(filesource) as f:        r=re.findall(pattern,f.read())

错误出在f.read().

改写后代码如下:

    with open(filesource,'rb') as f:        temp=f.read().decode('utf-8','ignore')        r=re.findall(pattern, temp)

用二进制读入再解码。其中decode用utf-8和ascii都可以,但ignore必须有,否则还是相同的错误。具体原因还不清楚,待查。
参考解决方法

另外在遍历文件夹的时候会读入隐藏文件,导致奇怪的结果,解决办法是判断文件后缀。具体如下:

    for txtName in os.listdir(file_path):        postfix=os.path.splitext(txtName)[1]        if postfix=='.txt':        ……
阅读全文
0 0
原创粉丝点击