Python – UnicodeDecodeError reads binary input

UnicodeDecodeError reads binary input… here is a solution to the problem.

UnicodeDecodeError reads binary input

I tried porting my code from python 2.7 to 3.4. It works just fine under 2.7.
I’m going to import a Picoscope binary and get the following error under Python 3.4 (ubuntu):

in __import_CS
data_A = bin_file_A.read(64)
File "/usr/lib/python3.4/codecs.py", line 313, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf3 in position 1: invalid continuation byte

Here is the code snippet:

bin_file_A = open(infile ,"r")
bin_file_B = open(infile_B ,"r")

######  read file header ########
data_A = bin_file_A.read(64)
data_B = bin_file_B.read(64)

start = 0
stop = struct.calcsize('8d')
n_A = struct.unpack('>8d', data_A[start:stop])
n_B = struct.unpack('>8d', data_B[start:stop])

Solution

Requires file reading in binary mode:

bin_file_A = open(infile_A, "rb")
bin_file_B = open(infile_B, "rb")

Related Problems and Solutions