… " pour pouvoir suivre o…" /> … " pour pouvoir suivre o…" />
Suite

Le script Python crée une feuille de calcul avec une exception


Dans le script Python suivant, je voudrais créer une feuille de calcul (Excel conviendrait) avec les résultats des exceptions au lieu de simplement imprimer "Il y a eu une erreur --->… " pour pouvoir suivre toutes les erreurs qui s'est produit (le cas échéant).

Aucune suggestion?

#import system modules import arcpy, os #Définir les options d'environnement arcpy.env.workspace = r'Z:project… gdb' # Calculer le champ avec arcpy.da.UpdateCursor pour fc dans arcpy.ListFeatureClasses() : essayer : avec arcpy .da.UpdateCursor(fc, ["Depth", "OD"]) comme curseur : pour la ligne dans le curseur : ligne[0] = ligne[0]*(-1) ligne[1] = ligne[1]*( -1) cursor.updateRow(row) print "Travail sur {0}".format(fc) sauf exception comme ex : print "Il y a eu une erreur ---> {0}".format(ex) print ("Ajouter Champ terminé")

Ma façon préférée d'obtenir des données dans Excel lors de l'exécution d'un script arcpy consiste simplement à imprimer ce que je souhaite avoir dans Excel, avec des onglets séparant mes valeurs. Ensuite, je peux copier/coller ce qui est créé à partir du shell dans Excel. J'imprime d'abord un en-tête, avec les noms de mes colonnes séparés par des tabulations, puis en itérant dans monpourboucles j'imprime les lignes d'information.

Quelque chose comme ça:

#import system modules import arcpy #Définir les options d'environnement arcpy.env.workspace = r'Z:project… gdb' #Excel header print ("Feature_Class	Processing_Result	Error") # Calculer le champ avec arcpy.da.UpdateCursor pour fc dans arcpy.ListFeatureClasses() : essayez : avec arcpy.da.UpdateCursor(fc, ["Depth", "OD"]) comme curseur : pour la ligne dans le curseur : ligne[0] = ligne[0]*(-1) row[1] = row[1]*(-1) cursor.updateRow(row) print (fc + "	Success") sauf Exception comme ex : print (fc + "	Failure	" + str(ex))

Vous pouvez également écrire ces informations dans un fichier texte et donner au fichier texte le.languetteextension. Cela indique à Excel que vos données sont délimitées par des tabulations.


J'aime utiliser le module openpyxl pour écrire des fichiers excel. C'est super facile une fois qu'on a pris le coup. Votre code ressemblerait à ceci -

#import system modules import arcpy, os from openpyxl import Workbook #Définir les options d'environnement arcpy.env.workspace = r'Z:project… gdb' #Create Workbook & worksheet wb = Workbook(optimized_write=True) # J'utilise toujours le version optimisée_écriture du rédacteur. Je n'en ai probablement pas besoin ici, mais je suis plus familier avec cette façon. Ne fait pas beaucoup de différence. ws = wb.create_sheet() #Excel header ws.append(["Feature_Class", "Processing_Result", "Error"]) # Une fois la feuille de calcul créée, lancez simplement des listes et elle écrira chaque valeur dans une colonne , ligne après ligne # Calculez le champ avec arcpy.da.UpdateCursor pour fc dans arcpy.ListFeatureClasses() : essayez : avec arcpy.da.UpdateCursor(fc, ["Depth", "OD"]) comme curseur : pour la ligne dans le curseur : ligne[0] = ligne[0]*(-1) ligne[1] = ligne[1]*(-1) curseur.updateRow(ligne) ws.append([fc, "Success"]) sauf Exception en tant que ex: ws.append([fc, "Echec", unicode(ex)]) wb.save('Le nom du fichier va ici')

L'avantage d'écrire votre message d'erreur de cette façon, c'est que vous n'avez pas à vous soucier d'écrire l'unicode sur la console, ce qui n'est jamais amusant. Excel gérera parfaitement votre encodage.


Une autre option, je ne sais pas si c'est pratique pour votre application, mais si vous souhaitez créer des feuilles Excel formatées et sophistiquées, vous pouvez investir un peu de temps dans l'apprentissage des modules python xlrd et xlwt. Vous pouvez pip installer ou easy_install les.

Il y a un peu de courbe d'apprentissage, mais ils ont bien fonctionné pour moi pour créer de jolis rapports/feuilles de synthèse à partir de données SIG que d'autres peuvent ouvrir dans Excel.

Sinon, les .tab (ou même juste un .csv) sont d'excellentes suggestions.


Une option serait de :

  1. Créez une liste et ajoutez les ID d'enregistrement d'exception à la liste (colonne/valeur d'ID unique)
  2. Une fois le curseur de mise à jour exécuté, créez une couche d'entités du fc
  3. Utilisez un curseur de recherche et parcourez chaque entité tout en parcourant la liste à partir de la première étape et effectuez une sélection de couche par attribut (ajout à la méthode de sélection) toutes les entités d'exception
  4. Une fois que vous avez sélectionné toutes les fonctionnalités d'exception, utilisez le, cela ne créera qu'un fichier xls pour ces fonctionnalités sélectionnées


Voir la vidéo: Créer un exécutable Windows à partir dun script Python (Octobre 2021).