4 votos

final de la ejecución de la secuencia de comandos y enviar por correo electrónico si el esquema ha cambiado

Me gustaría anexar los datos de una clase de entidad a otra después de confirmar que los esquemas coinciden en ambas clases de entidad.

Puedo anexar los datos de una FC a otro utilizando este código:

    arcpy.DeleteFeatures_management(outFeatureClass)
    arcpy.Append_management("FC", outFeatureClass, "TEST", "")

...pero lo que me gustaría hacer es detener la ejecución de este código completamente si los esquemas han cambiado...en mi ejemplo anterior, los datos ya han sido borrados por el tiempo que el cambio de esquema de parámetro ("TEST) se produce un error. Yo estoy usando el de 'añadir...' a/b / c estas clases de entidad están conectados a los servicios de mapas.

Idealmente, me gustaría en primer lugar comparamos los esquemas, y luego continuar para borrar/añadir si coinciden. Si no, me gustaría enviar un correo electrónico, y al final de la secuencia de comandos.

He intentado usar el FeatureCompare herramienta, que imprimirá un mensaje si los esquemas no coinciden, pero no he averiguado si o cómo puedo utilizar los datos en este mensaje como una variable en mi código:

 compare_result = arcpy.FeatureCompare_management(inFC, outFC, "OBJECTID", "SCHEMA_ONLY", "","","","","","","CONTINUE_COMPARE")
 print arcpy.GetMessages()

Cuando ejecuto este código, una línea de la salida de mensaje dice:

Tabla: las Tablas tienen diferente número de campos (Base: 48, de la Prueba: 47).

...si ha habido un cambio, o

Campo: Campo de propiedades son las mismas.

...si los esquemas de partido.

Hay una manera de alguna manera se puede utilizar esta información para establecer una marca o booleano en mi código?

Yo también considera el uso de un SearchCursor, pero yo no estoy tan seguro de que es la idea correcta.

Actualmente soy capaz de enviar un correo electrónico confirmando que el guión fue exitosa o si hubo un error, pero yo prefiero enviar un correo electrónico antes de que un error ha dado ya como resultado de un defecto en el servicio de mapas.

Espero que esta pregunta tiene sentido! Gracias por la ayuda.

2voto

Monroecheeseman Puntos 825

El FeatureCompare herramienta se detiene en el primer desajuste encontrados, por defecto. Usted puede cambiar el 11 de parámetro para CONTINUE_COMPARE. Esto le informe de todos desajuste de los mensajes. También, el objeto de Resultado de cada herramienta de geoprocesamiento tiene muchas propiedades que se pueden explorar. El maxSeverity los informes de una de las 3 condiciones, 0 - informal mensaje, 1 - mensaje de advertencia, 2 - mensaje de error. Usted debe ser capaz de clave en el maxSeverity u otros mensajes de resultado para salir de la secuencia de comandos.

EDITAR: El último parámetro de la Función de Comparar define el archivo de salida, el cual es un archivo de texto.
Ambos similiarities y las diferencias son reportados en el archivo de salida.
Puede utilizar esta función para consultar la característica de comparar la salida de errores en el archivo.
Aquí se muestra la lógica para el envío de un correo electrónico, cuando el esquema no coincide,
Si hasSchemaError(outputfile):
# crear correo electrónico
# enviar por correo electrónico
# sistema.exit()

import csv
import os

def hasSchemaError(textfile):
    ret = False
    if os.path.isfile(mycsv):
        source_file = open(textfile,'rb')
        reader = csv.DictReader(source_file, delimiter=',')

        for line in reader:
            if line['Has_error'] == 'true':
                ret = True
        source_file.close()
    return ret

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