Bonjour tout le monde,
J'ai une fonction qui marche bien en V2 mais depuis que je suis passé en V3 ça ne marche plus.
J'ai le message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 def get_file_encoding(filepath): raw_data = open(filepath, "r").read() # chardet is not compatible with context manager result = chardet.detect(raw_data) if result.get('confidence') > .5: char_enc = result.get('encoding') else: char_enc = 'utf-8' return char_enc
Expected object of type bytes or bytearray, got: <class 'str'>
En fouillant, j'ai trouvé d'où ce message venait :
(code tiré de la librairie)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 def detect(byte_str): """ Detect the encoding of the given byte string. :param byte_str: The byte sequence to examine. :type byte_str: ``bytes`` or ``bytearray`` """ if not isinstance(byte_str, bytearray): if not isinstance(byte_str, bytes): raise TypeError('Expected object of type bytes or bytearray, got: ' '{0}'.format(type(byte_str)))
Le problème est donc qu'il attend un type byte et là c'est vu en string.
j'ai alors essayé de convertir en bytes mais que neni :
Donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part result = chardet.detect(str.encode(raw_data))Voyez-vous comment je peux faire marcher cette fonction en python V3 SVP ? Je ne vois plus comment faire ?'str' object has no attribute 'decode'
D'avance, merci pour votre réponse et aide !!
Partager