2017-09-25 2 views
0

Je crée un outil qui donne un aperçu des centièmes de résultats de test. Cet outil accède à un fichier journal, vérifie les verdicts Pass and Fail. Quand c'est un échec, j'ai besoin de revenir aux lignes précédentes du journal pour capturer la cause de l'échec. La linecache.getline fonctionne dans mon espace de travail (Python Run via eclipse). Mais après avoir créé un programme d'installation Windows (fichier .exe) et installé l'application sur mon ordinateur, linecache.getline ne renvoie rien. Y at-il quelque chose que j'ai besoin d'ajouter dans mon fichier setup.py pour résoudre ce problème ou est-ce mon problème de code?Linecache getline ne fonctionne pas après l'installation de mon application

Code outil

PRECON: de wx.FileDialog, accéder au fichier journal

self.result_path = dlg.GetPath() 
    try: 
     with open(self.result_path, 'r') as file: 
     self.checkLog(self.result_path, file) 

def checkLog(self, path, f): 

     line_no = 1 
     index = 0 
     for line in f: 
      n = re.search("FAIL", line, re.IGNORECASE) or re.search("PASS", line, re.IGNORECASE) 
      if n: 
       currentline = re.sub('\s+', ' ', line.rstrip()) 
       finalresult = currentline 


       self.list_ctrl.InsertStringItem(index, finaltestname) 
       self.list_ctrl.SetStringItem(index, 1, finalresult) 

       if currentline == "FAIL": 

        fail_line1 = linecache.getline(path, int(line_no - 3)) #Get reason of failure 
        fail_line2 = linecache.getline(path, int(line_no - 2)) #Get reason of failure      
        cause = fail_line1.strip() + " " + fail_line2.strip() 
        self.list_ctrl.SetStringItem(index, 2, cause) 

        index += 1 
      line_no += 1 

Répondre