Ich habe ein Python-Skript, mit dem ich eine Liste aller MXD-Dateien (mit vollständigem Pfad) in unserem Projektordner erstelle. Das Skript verwendet dies dann, um die Liste zu durchlaufen und auf jedem mxd nach ESRIs Vorgehensweise einen Arbeitspfad zu finden und zu ersetzen. Ich habe Probleme, wenn ich auf eine beschädigte MXD-Datei stoße. Die haben versucht / außer und haben es nicht zum Laufen gebracht. Die ideale Situation wäre, den beschädigten Dateinamen in eine Datei zu schreiben und fortzufahren, damit ich am Ende darauf zurückkommen kann. Ich bin sehr neu in Python-Skripten, jede Hilfe wäre sehr dankbar.
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) - verwenden'a'
Sie stattdessen (ppend), als ob es mehr als einen beschädigten mxd gibt, den Sie jedes Mal überschreiben werden. Es kann auch übertrieben sein, aber das Python-logging
Modul ist möglicherweise einen Blick wert, um Fehler aufzuzeichnen.