#1 Tue 01 December 2015 10:24
ArcPy : ajouter plusieurs champs à une table
Bonjour,
J'essaie d'ajouter plusieurs champs à une couche avec ArcPy mais j'ai un peu de difficulté...
Voici le script que j'essaie d'utiliser...
>>> import arcpy
>>> from functools import partial
>>> arcpy.env.workspace = "CURRENT"
>>> shapefile = "REQUETE_URBA_2015.shp"
>>> fields = ["CHRDC", "ORCONT", "ZBRUIT", "AC2", "ICOMM", "PBOIS"]
>>> addfield = partial(
... arcpy.AddField_management,
... shapefile,
... field_type="TEXT")
... for field in fields:
... arcpy.AddField_management(shapefile, field)
Et le résultat
Parsing error IndentationError: unexpected indent (line 10)
A priori ça bloquerait à la ligne 10 du code mais j'ai du mal à voir d'où vient le souci...
Si quelqu'un pouvait éclairer ma lanterne ce serait très gentil
Merci beaucoup d'avance !
Hors ligne
#2 Tue 01 December 2015 13:10
- lebon henri
- Participant actif
- Lieu: Vendée
- Date d'inscription: 14 Jan 2008
- Messages: 99
Re: ArcPy : ajouter plusieurs champs à une table
Bonjour,
Vous avez une simple erreur d'indentation. Très classique. Voici un article sur l'indentation en python, ça vous aidera à l'avenir. http://python.developpez.com/cours/Dive … g_code.php
Mais quoi qu'il arrive, essayez plutôt un truc comme ça:
Code:
import arcpy fc = r"C:\Users\hlebon\Documents\ArcGIS\Default.gdb\toto22" fieldNames = ["CHRDC", "ORCONT", "ZBRUIT", "AC2", "ICOMM", "PBOIS"] for fieldName in fieldNames: fieldLength = 50 arcpy.AddField_management(fc, fieldName, "TEXT", "", "", fieldLength)
Hors ligne
#3 Tue 01 December 2015 17:25
Re: ArcPy : ajouter plusieurs champs à une table
Bonjour,
Merci pour votre aide !
Votre script marche très bien.
De mon côté le script corrigé donne quelque chose comme ça :
Code:
import arcpy from functools import partial arcpy.env.workspace="CURRENT" fc = r"C:\Users\lbe\Desktop\temp\REQUETE_URBA_2015.shp" fieldNames = ["CHRDC", "ORCONT", "ZBRUIT", "AC2", "ICOMM", "PBOIS"] for fieldName in fieldNames: arcpy.AddField_management(fc,fieldName)
Je pense que le précédent script ne marchait pas car j'avais écrit "for field in fields:" et non "for fieldName in fields:"
Merci
Hors ligne