3 votos

ArcPy función de eliminación no funciona dentro de bucle for?

Estoy creando una tabla y luego tratando de eliminar esa tabla dentro del mismo for bucle de la siguiente manera:

for fc in fcList:
    arcpy.GenerateNearTable_analysis(inFile, fc, out_table)
    arcpy.JoinField_management(inFile, "Obj_ID", out_table, "In_FID", ["NEAR_DIST"])
    arcpy.Delete_management(out_table)

Pero por alguna razón la sentencia delete no funciona. La tabla sigue existiendo después de que el script se complete "con éxito". Cuando ejecuto la sentencia delete sola después (es decir, fuera del for ), entonces la tabla se borra. Pero necesito borrarla dentro del for bucle para que pueda seguir con el bucle. Tengo que poner algunas declaraciones más dentro del for más tarde y la tabla debe ser eliminada primero para que las siguientes sentencias funcionen.

¿El Delete_management no funciona dentro de un for ¿un bucle por alguna razón?

4voto

John Kramlich Puntos 286

Sospecho que se está produciendo algún tipo de bloqueo de archivos. Un enfoque alternativo que podría probar es establecer la sobreescritura a True antes del bucle

arcpy.env.overwriteOutput = True

Esto significa que su out_table se sobreescribe constantemente y luego se usa el Delete fuera del bucle como lo has hecho.

2voto

Randyaa Puntos 904

Como se ha comentado en esta respuesta aceptada :

Creo que se trata de un problema con ArcGIS que tiene asas de archivo abiertas en los archivos de su carpeta temporal (out_table).

La solución aceptada sugería envolver todo el proceso que necesitas hacer en una función, llamar a ésta y, a medida que la función es devuelta (termina su ejecución), todas las variables dentro de su ámbito son borradas.

Sólo entonces podrá llamar a la función Borrar_gestión.

Pruebe algo como esto y vea si funciona:

def your_func_name(fc):
    arcpy.GenerateNearTable_analysis(inFile, fc, out_table)
    arcpy.JoinField_management(inFile, "Obj_ID", out_table, "In_FID", ["NEAR_DIST"])

for fc in fcList:
    your_func_name(fc)
    arcpy.Delete_management(out_table)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X