J'ai un fichier YAML décrivant mes objets etComment passer un paramètre à un constructeur de classe appelée par yaml.load_all
--- !MyData
name: theName
param: parameter
data_file: \\path\to\my\file.csv
Mon code est le suivant
class Load(Parent):
def __init__(self, name="",
param = param,
useDataFile=False,
data_file = "none",
**kwargs):
super().__init__(name=name,
data_file = data_file)
def load_constructor(loader, node):
values = loader.construct_mapping(node, deep=True)
return Load(**values)
yaml.add_constructor(u'!Load', load_constructor)
Au moment d'initialisation principal utilise ceci pour charger les données
with open(self.initFile, 'r', newline='') as ymlfile:
for item in yaml.load_all(ymlfile):
if type(item) is Load:
---- some post init code
Tout fonctionne bien, mais puisque mon code principal connaît déjà le chemin complet de data_file étant donné qu'il est dans le même répertoire que le yaml, est-il un moyen de donner seulement le nom du fichier_données sans chemin complet afin que je puisse changer l'emplacement sans avoir à modifier le fichier de configuration yaml? Comme le fichier_données est chargé par la classe Parent appelée via la fonction yaml.load_all, je ne sais pas comment donner un paramètre indiquant la valeur du chemin.