Tengo un script de Python que estoy usando para crear una lista de todos los archivos mxd (con ruta completa) en nuestra carpeta Proyectos. El script luego lo usa para recorrer la lista y hacer una búsqueda y reemplazar rutas de espacio de trabajo en cada mxd según las instrucciones de ESRI. Me encuentro con problemas cuando llego a un archivo mxd dañado. Han intentado probar / excepto y no han conseguido que funcione. La situación ideal sería escribir el nombre de archivo corrupto en un archivo y seguir adelante para que pueda volver a ellos al final. Soy muy nuevo con las secuencias de comandos de Python, cualquier ayuda sería muy apreciada.
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")
fuente
'w'
(rite); use'a'
(ppend) como si hubiera más de un mxd corrupto que sobrescribirá cada vez. Además, puede ser excesivo, perologging
vale la pena mirar el módulo Python para registrar errores.'a'
para agregar.Esto no tiene nada que ver con su error en los MXD corruptos, pero dado que desea iniciar sesión, aquí hay una pequeña pepita (casi directamente de los documentos de Python) que usa el
logging
módulo (como lo sugiere @om_henners). El comentario de @sgillies anterior también se ve excelente.Cuando se ejecuta como está, da:
fuente