Donc j'utilise pyroot pour faire l'analyse de données. La chaîne de code d'analyse exécute différents plugins sur les données et les affiche dans un fichier racine, stockant la sortie de chaque plug-in dans leur propre fichier TDirectoryFile dans le fichier racine. J'ai écrit une fonction qui prend le nom du fichier racine et le nom du plugin et devrait renvoyer les plugins TDirectoryFile. Cependant, il retourne à la place un NoneType, puis se bloque dès que j'essaye de faire quelque chose avec l'objet.python ne renvoie pas Noneobject, quand il devrait retourner l'objet racine TDirectoryFile
from ROOT import *
def getPluginData(fName,pName):
tfile=TFile("Analyzer.root")
plugin= tfile.Get("MuIndNeuSpallPlugin")
#outputs <class 'ROOT.TDirectoryFile'>
print type(MuIndNeuSpallPlugin)
return plugin
#This should be a <class 'ROOTTDirectoryFile'.>, but is a NoneType instead
MuIndNeuSpallPlugin=getPluginData("Analyzer.root","MuIndNeuSpallPlugin")
Est-ce que 'print (tfile.ls())' après avoir initialisé le fichier tfile indique que 'MuIndNeuSpallPlugin' est une clé? 'Get()' renvoie None si la clé n'est pas valide – jarcobi889
Donc MuIndNeuSpallPlugin est définitivement une clé. En fait, mon code d'origine n'a pas utilisé une fonction fonctionne très bien. C'est comme quand python quitte la portée de la fonction, il oublie simplement ce qu'est le plugin, et retourne un NoneType à la place. –
Avez-vous par hasard ce code original que vous pourriez ajouter à la question à titre de comparaison? Si non, pourriez-vous lancer 'tfile.ls()' juste pour les coups de pied et les fous rires et voir ce qu'il crache? Tout le reste semble être dans l'ordre que je peux voir, en plus de ne pas utiliser les variables 'fName' et' pName'. – jarcobi889