2012-03-05 3 views
0

Как вы программно останавливаете скрипт python после выполнения условия. В сценарии псевдо ниже:Программно остановить выполнение скрипта 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") 

Спасибо, Mike

ответ

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

не уверен, если я правильно

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() 
+0

Спасибо, Джоран. Это делает именно то, что я хотел. – Mike

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() 

Документация к any

+0

Спасибо Campos. Я пробовал использовать это, и это выходит за меня. Я играл с вашим предложением, чтобы добавить строки печати к функции. Я поместил их на том же уровне вкладки, что и «return», но это, похоже, не печатает для меня. Как установить строку печати для возврата каких-либо несогласованных записей? Благодаря! – 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() 
Смежные вопросы