Pages: 1
- Sujet précédent - [PYTHON] modifier plusieurs champs d'une table en un seul code - Sujet suivant
#1 Wed 28 February 2018 15:26
- piedro25
- Participant occasionnel
- Date d'inscription: 22 Dec 2016
- Messages: 43
[PYTHON] modifier plusieurs champs d'une table en un seul code
Bonjour à tous !
Voilà je travaille actuellement avec des tables ayant des libellés que j'aimerais modifier.
Cependant j'ai beaucoup de champs à modifier en même temps, j'ai donc pensé recourir à un code python pour n'avoir qu'a renseigner ma table, changer le nom des champs et lancer le programme.
Je suis donc passé par le model builder et lors de l'exportation en code python j'obtiens ça :
Code:
# Import arcpy module import arcpy # Local variables: Comptages_voyageurs_STIF_09_16_1 = "F:\\03_Mobilites_multimodales\\SIG_Carto\\Couches\\Comptages des voyageurs localises STIF\\Estimations_frequentations_gares_VO.gdb\\Comptages_voyageurs_STIF_09_16_1" Classe_d_entites_en_sortie = Comptages_voyageurs_STIF_09_16_1 Nom_du_champ = "diff_prctg" Nouveau_nom_de_champ = "diff_prctrrr" # Process: Modifier le champ arcpy.AlterField_management(Comptages_voyageurs_STIF_09_16_1, Nom_du_champ, Nouveau_nom_de_champ, "", "LONG", "4", "NULLABLE", "false")
Ce code marche bien pour changer un seul attribut. Mais comme dit précédemment j'aimerais en changer plusieurs à la fois.
J'ai donc parcourut l'aide d'arc gis online et j'ai établit un nouveau code que voici en copiant le script autonome issu de cette adresse : http://desktop.arcgis.com/fr/arcmap/10. … erties.htm
Code:
#Import geoprocessing import arcpy #Set workspace arcpy.env.workspace = r'F:\03_Mobilites_multimodales\SIG_Carto\Couches\Comptages des voyageurs localises STIF\Estimations_frequentations_gares_VO.gdb\Comptages_voyageurs_STIF_09_16' arcpy.overwriteOutput = True #Loop through feature classes looking for a field named 'elev' fcList = arcpy.ListFeatureClasses() #get a list of feature classes for fc in fcList: #loop through feature classes fieldList = arcpy.ListFields(fc) #get a list of fields for each feature class for field in fieldList: #loop through each field if field.name() == 'Différenc': arcpy.AlterField_management(Comptages_voyageurs_STIF_09_16,fc, field.name, diff_prtcg)
Mon idée était ensuite de faire des itérations successives sur les listes grâce à IF
En lançant le module je n'ai pas d'erreur mais la table ne se met pas à jours.
Pourriez-vous donc m'aider ?
Hors ligne
#2 Fri 09 March 2018 12:35
- JulienRscl
- Participant occasionnel
- Lieu: Lyon
- Date d'inscription: 23 May 2013
- Messages: 26
Re: [PYTHON] modifier plusieurs champs d'une table en un seul code
Bonjour,
Si votre champ ne se met pas à jour et que vous n'avez pas d'erreur, c'est très certainement que votre condition préalable (if field.name() == 'Différenc') n'a aucune correspondante.
En rajoutant un print 'ok', juste après votre condition, vous verrez si vous rentrez bien dans cette partie de code.
Si tel n'est pas le cas alors la condition est à revoir.
Autre chose : l'accent dans le nom du champ ne va certainement pas aider à arriver à votre fin.
Hors ligne
#3 Tue 13 March 2018 12:42
- piedro25
- Participant occasionnel
- Date d'inscription: 22 Dec 2016
- Messages: 43
Re: [PYTHON] modifier plusieurs champs d'une table en un seul code
Hello et merci d'avoir répondu.
J'ai trouvé la solution à mon problème et sans à avoir à passer par Python.
En sélectionnant l'outil renommer dans la arctool box j'ai fait clic droit et selection "Par lot". J'ai ensuite eu simplement à sélectionner les couches que je voulais renommer ainsi que les attributs pour les changer en même temps !
Hors ligne
Pages: 1
- Sujet précédent - [PYTHON] modifier plusieurs champs d'une table en un seul code - Sujet suivant