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