Bonjour à tous,

Il y a de cela quelques semaines j'ai pu grâce à votre aide créer un script qui enregistre les données recueillies sur la page web de ma chaudière pour les enregistrer sur un fichier de données pour utilisation future. Un fichier est crée par mois, dans un dossier correspondant.
J'ai créé sur le même modèle un script qui enregistre les températures des pièces de ma maison et un autre qui enregistre des données météo.

Les scripts tournent en continu depuis début février via des scripts dans systemd de mon raspberry pi.
Et aujourd'hui, quand j'ai voulu ouvrir un des fichiers de données dans l'éditeur de texte de mon raspberry j'obtiens une fenêtre d'erreur me disant que le document n'est pas en utf-8 valide (séquence d'octets invalide en début de conversion).

J'ai par le passé déjà ouvert ces différents fichiers de données plein de fois et cela n'a jamais posé le moindre problème. Plus aucun ne s'ouvre maintenant.
Par contre si je les transfère sur mon ordinateur windows via WinSCP il s'ouvre tout seul dans l'éditeur de texte, avec codage utf-8....

Voilà le code en question :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import urllib.request
from lxml import etree
from urllib.error import URLError, HTTPError
import base64
import csv
import os
import time
from datetime import datetime
from pathlib import Path
 
 
while True : 
    #Definition de la date sous la forme "MoisAnnee" en francais.
    current_datetime = datetime.now()
    current_date = current_datetime.strftime("%B%Y") 
    #print(current_date)
    Mois=['janvier','février','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','décembre']
    mois = current_datetime.date().month
    #print(Mois[mois])
    Q = Mois[mois-1]
    #print(Q)
    current_date = Q + current_datetime.strftime("%Y") 
    #print(current_date)
 
 
    Record_dir = '/home/pi/Domotique/Donnees_Chaudiere/' + current_date 
    Record_file = Record_dir + f"/{current_date}.txt"
 
 
    url = "http://192.168.1.78/status.xml"
 
    request = urllib.request.Request(url)
 
    # Ajouter les informations d'authentification
    credentials = ("admin:boiler").encode()
    encoded_credentials = base64.b64encode(credentials)
    request.add_header("Authorization", "Basic " + encoded_credentials.decode())
 
    try:
        with urllib.request.urlopen(request) as response:
            data = response.read()
            # Parser le contenu XML
            root = etree.fromstring(data)
 
            # Obtenir la date et l'heure actuelles
            current_datetime = datetime.now()
            #current_date = current_datetime.strftime("%Y-%m-%d")
            current_time = current_datetime.strftime("%H:%M:%S")
 
            # Former le nom du fichier en fonction du mois et de l'annee
            Record_file = Record_dir + f"/{current_date}.txt"  
            #print(Record_file)
            # Préparer les donnees pour le fichier CSV
            current_date = current_datetime.strftime("%d-%m-%Y")
            data_to_write = {"Date": current_date, "Heure": current_time}
            data_to_write.update({element.tag: element.text for element in root})
            #print(data_to_write.update)
            # Vérifier si le fichier existe pour ecrire l'en-tete ou non
            file_exists = os.path.isfile(Record_file)
            #print(file_exists)
            with open(Record_file, "a", newline="", encoding="utf-8") as f:
                writer = csv.DictWriter(f, fieldnames=data_to_write.keys())
 
            #ecrire l'en-tete si le fichier est nouveau
                if not file_exists:
                    writer.writeheader()
 
            # Écrire les donnees
                writer.writerow(data_to_write)
                f.close()
                time.sleep(3)
    except HTTPError as e:
        print(f"Erreur HTTP : {e.code} {e.reason}")
 
    except URLError as e:
        print(f"Erreur d'URL : {e.reason}")
 
    except etree.XMLSyntaxError as e:
        print(f"Erreur de syntaxe XML : {e}")
et le fichier de données :
mars2024.7z

Savez-vous ce qui a pu changer ? Je n'ai pas touché au code depuis février et je n'ai pas non plus apporté de changements à mon raspberry.

Merci d'avance pour votre aide !