Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
lire un document .odt
Bonjour j'aimerais savoir s'il est possible de lire avec la methode read() un document texte que j'ai sur libre office?Si oui comment? car a chaque fois que j'essaye de le faire j'ai un message d'erreur qui spécifie que j'ai un probleme d'encodage
" File "C:\Users [...] line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 752: character maps to <undefined>"
quand j'essaye avec un mode d'ouverture "rb" j'ai un affichage illisible(en code binaire du coup ,enfin je crois!) de type : "b"PK\x03\x04\x14\x00\x00\x08\x00\x00`%\xb5V^\xc62\x0c'\x00"
es-ce impossible de lire tout autre tye de document différent de .txt?</undefined>
Salut !
Quand tu as un document LibreOffice, c'est un fichier .odt, qui est en fait un fichier zippé contenant plusieurs fichiers XML. C'est pour ça que tu vois un tas de choses bizarres et non lisibles quand tu essaies de le lire avec la méthode read() en mode "rb". Ce n'est pas fait pour être lu comme un fichier texte.
si tu as besoin de lire ou d'extraire du texte depuis un fichier .odt, il y a une bibliothèque pour cela, qui s'appelle python-docx. Tu peux l'installer en utilisant pip:
pip install python-docx
Et voici un petit exemple de comment tu peux l'utiliser:
from docx import Document
doc = Document('tonFichier.odt') # remplace 'tonFichier.odt' par le nom de ton fichier
for para in doc.paragraphs:
print(para.text)
Ce code va ouvrir ton document et imprimer chaque paragraphe.
Concernant l'erreur d'encodage, cela arrive quand Python essaye de lire un fichier qui contient des caractères qu'il ne peut pas comprendre avec l'encodage actuel. Pour y remédier, tu peux spécifier l'encodage lors de l'ouverture du fichier. Par exemple, "utf-8" est un choix courant :
with open('tonFichier.txt', 'r', encoding='utf-8') as f:
text = f.read()
Ça peut arriver sur des fichiers .txt également. Mais dans ton cas c'est vraiment à cause du format .odt dr LibreOffice :)
Inscris-toi
(c'est gratuit !)

Tu dois créer un compte pour participer aux discussions.
Créer un compte person