2017-05-24 9 views
0

내 코드를 더자가 치료할 수있는 문제가 있습니다. 예 : CSV에서 Vertica 데이터베이스로 데이터를로드하는 방법 1을 실행합니다. 두 번째 방법은 데이터베이스의 행 수와 CSV 파일의 행 수가 동일한 지 확인하는 것입니다. 행 수가 일치하지 않으면 쿼리를 호출 한 지점에서 메서드 2를 호출하여 CSV에서 데이터베이스로 데이터를로드하려고합니다.Python에서 검사 점을 지정하여 런타임 상태를 파악하십시오.

이 문제에 대한 검사 점 전략을 생각하고있었습니다. 일반적으로 오류가 발생한 코드의 일부 지점을 유지하고 다른 지점에서 오류를 다시 호출합니다.

필자는 이미 파이썬에서 pickle 모듈을 사용해 보았지만 pickle은 객체, 클래스, 변수 등을 저장할 수 있다는 사실을 알게되었고 실제로 메소드를 실행할 수있는 지점을 저장할 수 없었습니다.

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 

내가 내 코드 망고 방법은 사과 메서드를 호출 할 때, 그것은 '매플'에만 인쇄의 관점에서 실행해야합니다 있도록 실행하려는 :

나는 몇 가지 데모 코드를 제공하고 있습니다. 전체 메소드를 실행해서는 안됩니다.

이 문제를 해결하는 방법에 대한 몇 가지 정보를 제공해주십시오. 사전

답변

0

에서

감사 :
귀하의 코드가 전혀 작동하지 않습니다. filehandler in def mango(...이고 filehandlerdef apple(...과 동일합니다. 따라서 def mango(...에있는 파일은 이 아니며을 닫지 않았습니다.

는 전혀 pickle 필요하지 마십시오 if condidtion def apple에 추가합니다.

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)