Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

If condition is met, skip from 2nd iteration onwards

#Can be more than two items also.
item_list = ["rpm", "exe"]

extraction_status = True
while extraction_status:
    file_status_flag = True
    
    file_status = some_other_function(arg1, arg2) # returns a nested dictionary of lists.
    
    for item in file_status['BU']: # file_status['BU'] = ["HR", "DEV" ,"Admin"]
        if item['extensions'] in item_list: #rpm or exe or zip
            if (file_status['status'] == "PUSHED")):
                print("file from {} reached target..".format(item))
                #do further action on that file
                continue # not working
            else:
                print("Status of {} is {}".format(item, file_status['status']))
    # To check if all the items in item_list has been pushed.               
    if (file_status_flag and (file_status['status'] == "PUSHED")):
        "All files reached target..make the script successful.."
        extraction_status = False       

Let me explain, if HR is of status PUSHED, for the 1st time or iteration, do certain actions, from subsequent iteration onwards, skip if condition is met.

continue skips the current iteration, which I’m not looking for.

Is it possible ?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Example output

1st iteration:
file from BU reached target
file from DEV In Progress
file from Admin Not Prepared

2nd iteration: 
file from DEV In Progress
file from Admin In Progress

so on..

>Solution :

Why not just add another flag to see if you already checked the condition? For example, we can add a flag called already_checked, set it to True on the first iteration and subsequently, if it’s already True then skip doing further actions:

item_list = ["rpm", "exe"]

extraction_status = True
while extraction_status:
    file_status_flag = True
    already_checked = False    # add this flag 
    
    file_status = some_other_function(arg1, arg2)
    
    for item in file_status['BU']: 
        if (item['extensions'] in item_list) and not already_checked:
            if (file_status['status'] == "PUSHED")):
                print("file from {} reached target..".format(item))
                #do further action on that file
                already_checked = True     # on the first successful iteration set the flag
            else:
                print("Status of {} is {}".format(item, file_status['status']))
    # To check if all the items in item_list has been pushed.               
    if (file_status_flag and (file_status['status'] == "PUSHED")):
        "All files reached target..make the script successful.."
        extraction_status = False 
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading