#1 Tue 12 June 2012 17:55
- Lebon henry
- Participant occasionnel
- Lieu: Avignon
- Date d'inscription: 23 Sep 2007
- Messages: 12
ListBrokenDataSources sous arcgis10
Bonjour,
J'ai testé le code de l'aide arcgis qui doit normalement renvoyer une liste de liens cassés dans les mxd d'un dossier mais j'ai le message d'erreur suivant : Runtime error <type 'exceptions.NameError'>: name 'mxd' is not defined
Code:
import arcpy, os path = r"C:\Project" for fileName in os.listdir(path): fullPath = os.path.join(path, fileName) if os.path.isfile(fullPath): basename, extension = os.path.splitext(fullPath) if extension == ".mxd": mxd = arcpy.mapping.MapDocument(fullPath) print "MXD: " + fileName brknList = arcpy.mapping.ListBrokenDataSources(mxd) for brknItem in brknList: print "\t" + brknItem.name del mxd
Quelqu'un sait comment on utilise ce code correctement ?
Merci d'avance.
(Je ne connais pas bien arcpy).
Hors ligne
#2 Wed 13 June 2012 08:02
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: ListBrokenDataSources sous arcgis10
Bonjour,
Ce code va chercher dans le répertoire "C:\Project" tous les fichiers mxd et les traite un à un.
Il vous faut modifier la variable path à la ligne 2 en indiquant le répertoire qui contient votre mxd par exemple
Code:
path = r"C:\dossier1\dossier2"
Le message d'erreur est du à la dernière ligne du code
Code:
del mxd
Le programme ne trouve pas de fichier ".mxd" et demande à la fin de supprimer la variable mxd alors qu'il ne l'a pas créée.
A+
Dernière modification par Nicolas Granier (Wed 13 June 2012 08:02)
Hors ligne
#3 Wed 13 June 2012 10:52
- Lebon henry
- Participant occasionnel
- Lieu: Avignon
- Date d'inscription: 23 Sep 2007
- Messages: 12
Re: ListBrokenDataSources sous arcgis10
Salut,
Merci de la réponse mais j'ai résolu mon problème.
En fait le script d'esri ne cherche pas dans les sous-dossiers comme je le voulez.
Cette version que j'ai fait le fait.
Code:
import arcpy import glob import os for pathname, directories, filenames in os.walk(r"C:\Dossier"): for filename in filenames: if filename.lower().endswith(".mxd"): mxd = arcpy.mapping.MapDocument(os.path.join(pathname, filename)) filename, ext = os.path.splitext(os.path.join(pathname, filename)) brknList = arcpy.mapping.ListBrokenDataSources(mxd) for brknItem in brknList: print mxd.filePath + ";" + brknItem.name + ";" + brknItem.dataSource
Hors ligne