Ussopokingo
Ussopokingo

Reputation: 109

UnicodeDecodeError, utf-8 invalid continuation byte

I m trying to extract lines from a log file , using that code :

    with open('fichier.01') as f:
         content = f.readlines()

    print (content)

but its always makes the error statement

    Traceback (most recent call last):
    File "./parsepy", line 4, in <module>
    content = f.readlines()
    File "/usr/lib/python3.5/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2213: invalid continuation byte

how can i fix it ??

Upvotes: 8

Views: 48803

Answers (3)

white
white

Reputation: 19

Try to use it to solve it:

with open('fichier.01', errors='ignore') as f:
   ###

Upvotes: 0

grahamlyons
grahamlyons

Reputation: 717

If it's not encoded as text then you will have to open it in binary mode e.g.:

with open('fichier.01', 'rb') as f:
    content = f.readlines()

If it's encoded as something other than UTF-8 and it can be opened in text mode then open takes an encoding argument: https://docs.python.org/3.5/library/functions.html#open

Upvotes: 6

MattR
MattR

Reputation: 5126

try one of the following

open('fichier.01', 'rb')
open('fichier.01', encoding ='utf-8')
open('fichier.01', encoding ='ISO-8859-1')

or also you can use io Module:

import io
io.open('fichier.01')

This is a common error when opening files when using Python (or any language really). This is an error you will soon learn to catch.

Upvotes: 13

Related Questions