Bonjour,
J'ai une classe dans laquelle je charge une structure à partir d'un fichier
Tous les objets relatifs à la structure sont dans un module
Lorsque je charge cette structure, tous mes logs au cours de ce chargement semblent indiquer que tout se passe bien.
Mais une fois revenu dans la fonction appelante, tous les objets ont disparu
N'étant pas très au point sur les modules, je mets ici le contenu du fichier __init__.py contenu dans le répertoire DecEnr
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 import traceback import os import Config.Parameters as Prm import DecEnr import logging os.environ['BASE_DIR'] = os.getcwd() class DecEnrParser: def __init__(self, parameter_file='./DecEnrParser.yml'): Prm.load(parameter_file) self.init_logger() self.dec_enr_structure = DecEnr.Structure() self.dec_enr_structure.load() ### Chargement de la structure, le log à la fin de cette méthode est plus bas (log 1) logging.debug("{}".format(self.dec_enr_structure)) ### <<< Le résultat de ce log est un peu plus bas (log 2)
En gros, la structure contient une collection de cellules (en fait un dictionnaire encapsulé dans un objet)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 from .Structure import * from .Record import * # J'ai aussi essayé en ajoutant tous les objets du module from .Cellule import * from .CellulesCollection import * from .Zone import * from .ZoneCollection import *
Les cellules sont elles-mêmes des objets contenant chacune une collection de zones, chaque zone étant un objet...
Voici le début du fichier relatif à la structure avec la méthode de chargement (load)
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 import csv from .CellulesCollection import * from .Zone import * from .Cellule import * import Config.Parameters as Prm class Structure: def __init__(self): csv.register_dialect('excel_french', excel_french) self.cellules = CellulesCollection() def __repr__(self): return str(self.cellules) def load(self): # Procédure de chargement des données qui semble bien se passer with open(Prm.get('structure/filename'), encoding=Prm.get('structure/encoding')) as inf: cr=csv.reader(inf, 'excel_french') is_struct_part = False for i, csv_row in enumerate(cr): if i==0: header = self.map(csv_row) else: row = dict(zip(header, csv_row)) if row["Orig"] == 'Fichier': zone = Zone(row) self.cellules.add(zone) self.cellules.update_pos() self.cellules.update_len() logging.debug("{}".format(self)) ### <<< Le résultat de ce log est un peu plus bas (log 1)
LOG 1 : à la fin du chargement de la structure. Tout est nickel.
LOG 2 : au retour de la fonction
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 2021-02-03 13:28:53,882 [INFO] Structure.py - load : Cellule Cellule01 > CEL-TYP : 2 - 1 2 > LIG-NUM : 2 - 3 2 > TRM-FRI : 2 - 5 59 > EME-IDT : 3 - 5 15 > PAR-IDT : 3 - 20 9 > LOT-DTJ : 3 - 29 9 [...] Cellule Cellule02 > CEL-TYP : 2 - 1 2 > NEC-FAC : 2 - 3 6 > SLM-IDT : 3 - 3 5 > SLM-NRO : 4 - 3 3 > CLM-COD : 4 - 6 2 [...]
Les clés du dictionnaire de la Collection de cellule sont toujours là mais plus le contenu
Je n'arrive pas à comprendre comment ce contenu disparaît entre la fin de la fonction de chargement et le retour de cette fonction.
Je ne comprends pas ce qu'il se passe ici. Problème avec l'implémentation d'un module ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 2021-02-03 13:28:53,884 [INFO] Record.py - __init__ : Cellule Cellule01 Cellule Cellule02 Cellule Cellule04 Cellule Cellule05 Cellule Cellule06
EDIT:
Ce n'est pas lié à l'utilisation des modules.
En mettant tous les fichiers sources dans le même répertoire, j'ai le même problème.
Partager