2017-05-24 3 views
0

Ich habe ein Problem, meinen Code selbstheilbarer zu machen. ZB: Ich führe eine Methode 1 aus, um die Daten aus einer CSV in die Vertica-Datenbank zu laden. Ich habe eine andere Methode 2, um zu überprüfen, ob die Anzahl der Zeilen in der Datenbank und die Anzahl der Zeilen in der CSV-Datei gleich ist. Wenn die Anzahl der Zeilen nicht übereinstimmt, dachte ich daran, die Methode 2 von dem Punkt aus aufzurufen, an dem sie die Abfrage aufgerufen hat, um Daten von CSV in die Datenbank zu laden.Checkpointing in Python, um den Laufzeitstatus zu erfassen

Ich dachte über eine Checkpoint-Strategie für dieses Problem nach. wie, einige Punkte im Code beibehalten, wo die Fehler normalerweise auftreten und sie an anderen Punkten erinnern.

Ich habe bereits versucht, Gurke-Modul in Python, aber kam zu wissen, dass Gurke kann nur Objekte, Klassen, Variablen usw. speichern kann nicht den Punkt speichern, wo ich tatsächlich eine Methode ausführen kann.

Ich habe einige Demo-Code zur Verfügung gestellt:

import pickle   
class Fruits: 
    def apple(self): 
    filehandler= open ("Fruits.obj","wb") 
    print "apple" 
    pickle.dump(self,filehandler) 
    print "mapple" 
    filehandler.close() 
    def mango(self): 
    filehandler = open("Fruits.obj","rb") 
    print "mango" 
    obj=pickle.load(filehandler) 
    obj.apple() 

general = Fruits() 
general.apple() 
general.mango() 

the output of above program is: 
apple 
mapple 
mango 
apple 
mapple 

ich mein Code soll so ausgeführt werden, dass, wenn Mango Methode Apfel-Methode aufruft, ist es unter dem Gesichtspunkt der nur print „mapple“ ausführen muss. Es darf nicht die gesamte Methode ausführen.

Bitte geben Sie mir einige Einblicke, wie Sie dieses Problem lösen können.

Dank im Voraus

Antwort

0

Hinweis:
Ihr Code überhaupt nicht funktionieren. filehandler in def mango(...ist nicht das gleiche wie filehandler in def apple(.... Daher ist die in def mango(... geöffnete Datei niemals geschlossen.

hinzufügen if condidtion zu def apple, müssen Sie gar nicht brauchen pickle.

def apple(self, mango=False): 
    if not a´mango: 
     filehandler= open ("Fruits.obj","wb") 
     ... 

    print "mapple"   
    ... 

def mango(self): 
    filehandler = open("Fruits.obj","rb") 
    ... 
    obj.apple(True) 
Verwandte Themen