J'ai un script python que j'utilise pour créer une liste de tous les fichiers mxd (avec chemin complet) dans notre dossier Projets. Le script utilise ensuite cela pour parcourir la liste et faire un findandreplaceworkspacepaths sur chaque mxd selon la procédure de ESRI. Je rencontre des problèmes lorsque je frappe un fichier mxd corrompu. Ils ont essayé try / except et ne l'ont pas fait fonctionner. La situation idéale serait d'écrire le nom de fichier corrompu dans un fichier et de continuer pour que je puisse y revenir à la fin. Je suis très nouveau avec les scripts python, toute aide serait grandement appréciée.
import arcpy, os, sys, traceback, time
oldpath = 'W:'
newpath = 'W:\\GIS'
def find(path,pattern):
matches = []
for r,d,f in os.walk(path):
for files in f:
if files.endswith(pattern):
fpath = os.path.join(r,files)
matches.append(fpath)
print (fpath)
return matches
print ("Go: ")
mxdlist = (find('C:\\gis','.mxd'))
print (mxdlist)
print ("Starting Path Conversion")
try:
for mxdold in mxdlist:
mxd = arcpy.mapping.MapDocument(mxdold)
mxd.findAndReplaceWorkspacePaths(oldpath, newpath)
time.sleep(6)
mxd.save()
time.sleep(6)
print (mxdold)
del mxd
except arcpy.ExecuteError:
arcpy.AddError(arcpy.GetMessages(2))
except:
arcpy.AddError("Non-tool error occurred")
'w'
(rite) - utilisez'a'
plutôt (ppend) comme s'il y avait plus d'un mxd corrompu que vous écraseriez à chaque fois. En outre, cela peut être exagéré, mais lelogging
module Python peut valoir la peine d'être examiné pour enregistrer les erreurs.