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

用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':
        ……

你可能感兴趣的:(python)