Bonjour,
Voilà j'ai écrit un programme qui doit me permettre d'ajouter 7 lignes dans un fichier si le dernier enregistrement dans ce fichier (qui doit correspondre au 7 premières lignes de mon fichier) est différent de celui que je veux y inscrire.
En plus de ça, je ne veux pas avoir plus de dix enregistrements dans mon fichier donc, si j'en ai déjà dix et que l'enregistrement que je veux inscrire n'est pas le même que le dernier alors je veux supprimer les 7 dernières ligne de mon fichier et écrire mon enregistrement (7 lignes) au début de mon fichier.
Mon problème est que je n'est pas trouvé comment faire pour supprimer les 7 dernières lignes de mon fichier et écrire mon enregistrement au début du fichier. Mon fichier étant ouvert en mode "append" j'ai pensé à utiliser la fonction seek() mais je reste bloqué là.
Est-ce que quelqu'un aurait une petite idée ? (Désolé pour le pavé d'avant mais je voulais être le plus clair possible)
Voici mon bout de programme :
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 #!/usr/bin/python # -*- coding: utf-8 -*- import re # Fonction qui va récupérer les 7 lignes que je vais éventuellement insérer dans mon fichier def parseCRMON(file_crmon): contenu = [] derupdate = "" current = "" serveur = "" statut = "" serv_stat = "" regex1 = "(\w+\s\w+\:\s\w+\s\w+\s\d+\s\d+\:\d+\:\d+\s\d+)" regex2 = "(Current\:\s\w+)" regex3 = "Serveur\s(\w+)\s\(\w+\-\w+\-\w+\-\w+\-\w+\)\:\s(\w+)" pattern1 = re.compile(regex1) pattern2 = re.compile(regex2) pattern3 = re.compile(regex3) fh = open("file_crmon","r") lignes = fh.readlines() for ligne in lignes: ligne = ligne.rstrip("\n") found1 = pattern1.search(ligne) found2 = pattern2.search(ligne) found3 = pattern3.search(ligne) if found1: derupdate = found1.group(1) contenu.append(derupdate) if found2: current_dc = found2.group(1) content.append(current_dc) if found3: serveur = found3.group(1) statut = found3.group(2) serv_stat = "%s: %s" % (serveur, statut) contenu.append(serv_stat) fh.close() return contenu #Fonction qui va vérifier que je peux écrire mon enregistrement en le comparant avec le premier enregistrement de mon fichier, l'écrire au début du fichier si c'est bon et supprimer les sept dernières lignes def addEntry(self, fichier, compare_table): donnees_liste1 = self.compare_table donnees_liste2 = [] fih = open("fichier","a") lignes = fih.readlines() for ligne in lignes: ligne = ligne.rstrip("\r") donnees_liste2.append(ligne) if donnees_liste1[1] == donnees_liste2[1]: if donnees_liste1[2] == donnees_liste2[2]: if donnees_liste1[3] == donnees_liste2[3]: if donnees_liste1[4] == donnees_liste2[4]: if donnees_liste1[5] == donnees_liste2[5]: if donnees_liste1[6] == donnees_liste2[6]: fih.close() else: if len(donnees_liste2) >= 64:
Partager