2017-06-29 97 views
1

我试图打开下列方式文件:抓“UTF-8”编解码器不能在位置X解码字节X:无效的起始字节

file = open(filename, 'r', encoding='utf-8', errors='strict') 

但所有我得到的是下面的错误消息:

'utf-8' codec can't decode byte 0xa9 in position 75: invalid start byte 

所以我想,我们捕获的错误,让我们回退到errors=ignore下列方式:

try: 
    file = open(filename, 'r', encoding='utf-8', errors='strict') 
except UnicodeError as decode_error: 
    file = open(filename, 'r', encoding='utf-8', errors='ignore') 

但没有,我总是得到相同的错误信息,似乎我无法捕捉到错误。我也尝试过OSError, IOError, UnicodeDecodeError, RuntimeError, Exception

回答

1

打开文件不会读取它。因此,open永远不会抛出UnicodeDecodeError。尝试读取文件。

当文件不存在时(FileNotFoundError)或者当您没有足够的权限时(PermissionError),将打开该文件。

您必须在应用程序的其他位置捕获UnicodeDecodeError。这就是说,如果你准备无视Unicode解码错误,那么没有理由首先打开errors='strict'文件。

相关问题