2012-03-05 2 views
0

조건문을 실행 한 후 프로그래밍 방식으로 파이썬 스크립트를 어떻게 중지합니까?조건문 실행 후 프로그래밍 방식으로 python 스크립트 실행을 중지합니다.

for row in rows: 

    if row.FIRSTDATE == row.SECONDDATE: 
     pass 
    else: 
     print "FIRSTDATE does not match SECONDDATE " + row.UNIQUEID 

## If I set my quit sequence at the this tab level, it quits after the first 
## unmatched record is found. I don't want that, I want it to quit after all the 
## unmatched records have been found, if any. if all records match, I want the 
## script to continue and not quit 

     sys.quit("Ending Script") 

감사합니다, 마이크 내가 이런 식으로 할 것 제대로

doQuit = 0 
for row in rows: 
    if row.FIRSTDATE != row.SECONDDATE: 
     print "FIRSTDATE does not match SECONDDATE " + row.UNIQUEID 
     doQuit = 1 
if doQuit: sys.exit() 

답변

2
quit_flag = False 
for row in rows: 

    if row.FIRSTDATE == row.SECONDDATE: 
     pass 
    else: 
     print "FIRSTDATE does not match SECONDDATE " + row.UNIQUEID 
     quit_flag = True 

if quit_flag: 
    print "Ending Script" 
    sys.exit() 
+0

체크하면 첫 번째의 포인트는 무엇인가? –

1

확실하지 : 아래의 의사 스크립트에서

def DifferentDates(row): 
    if row.FIRSTDATE != row.SECONDDATE: 
     print "FIRSTDATE does not match SECONDDATE " + row.UNIQUEID 
     return True 
    else: 
     return False 

# Fill a list with Trues and Falses, using the check above 
checked_rows = map(DifferentDates, rows) 

# If any one row is different, sys exit 
if any(checked_rows): 
    sys.exit() 
에 대한

문서

+0

감사합니다. Joran. 이것은 내가 원했던 것과 똑같습니다. – Mike

1

이해한다면

+0

감사합니다 Campos. 나는 이것을 사용해 보았고 그것은 나를 위해 끝나고있다. 나는 당신의 제안으로 그 기능에 인쇄 라인을 추가하기 위해 놀고 있었다. 나는 '반환'과 동일한 탭 수준에 배치했지만 그게 나를 위해 인쇄하지 않는 것 같습니다. 일치하지 않는 레코드를 반환하도록 인쇄 줄을 설정하려면 어떻게해야합니까? 감사! – Mike

+0

@ mike-macrae 인쇄물을 추가하기 위해 편집 됨. 그 외에는 필요하지 않지만 명확성을 위해 존재합니다. –

1

또 다른 방법 :

mis_match = [] 

for row in rows: 
    if row.FIRSTDATE != row.SECONDDATE: 
     mis_match.append(row.UNIQUEID) 

if mis_match: 
    print "The following rows didn't match" + '\n'.join(mis_match) 
    sys.exit()