es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Repite una iteración defectuosa en el bloque “try” en el bucle “for element in” – python.

Escribo un script en python usando selenium.

Básicamente, abro un archivo de direcciones e intento localizar la capa de información asociada con cada dirección en el sitio de ArcGis.

for element in listaDeDirecciones:

    direccion = element

    try:

        driver = webdriver.Chrome('D:\downloads\chromedriver_win32\chromedriver')
        driver.get("https://www.arcgis.com/home/webmap/viewer.html?layers=c9fa1db72f74433b8eea48ed82a4e4f9") 
        time.sleep(6) // Todo tipo de elementos se cargan en el sitio web

        barra_busqueda = driver.find_element_by_id("geocoder_input")
        barra_busqueda.clear()
        barra_busqueda.send_keys(direccion)
        barra_busqueda.send_keys(Keys.RETURN) // Buscar dirección

        time.sleep(3) // Todo tipo de elementos se cargan en el sitio web
        mouse.move(422, 516, True, 0.1) 
        mouse.click('left') // hacer que aparezca el elemento

        stat_11 = driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[3]/div[5]/div[2]/div[1]/div[3]/div[3]/div[1]/div[2]/div/div/div[2]/div[3]/table/tr[2]/td[2]/span").text // El xpath específico del elemento web en el cual se encuentra la información que necesito

        driver.close()
        driver.quit()

        print()

        LineasParaArchivoTxt.append("NO, " + direccion.replace(',', '-') + ", " + str(stat_11))

    except:
        LineasParaArchivoTxt.append("Se ha producido una excepción")

Esa es la parte relevante.
Lo que quiero hacer, y no he encontrado una respuesta para ello, es repetir la iteración actual en caso de que el código arroje una excepción.

Es decir,

try:
    # Bloque try aquí

except:
    LineasParaArchivoTxt.append("Se ha producido una excepción")
    RepetirIteracionActualConElMismoElemento()  // Esto es solo para fines ilustrativos

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para repetir la iteración actual con el mismo elemento en caso de una excepción, simplemente puedes usar la palabra clave “continue” en el bloque “except”. Esta palabra clave omitirá la iteración actual y pasará a la siguiente, repitiendo de manera efectiva la misma iteración nuevamente. Aquí tienes un ejemplo de cómo puedes usarlo:

    for element in AddressesList:
    
        # configurar el bloque try
        try:
            # tu código aquí
    
        # configurar el bloque except
        except:
            # registrar la excepción en un archivo
            LinesToTxtFile.append("Ocurrió una excepción con el elemento: " + element)
            # repetir la iteración actual
            continue
    

    Al utilizar la palabra clave “continue”, el código omitirá el bloque “except” y pasará a la siguiente iteración con el mismo elemento, repitiendo la misma iteración hasta que el código pueda ejecutarse correctamente.

Comments are closed.