Eu tenho um script python que estou usando para criar uma lista de todos os arquivos mxd (com o caminho completo) em nossa pasta Projetos. O script então usa isso para percorrer a lista e fazer uma busca e substituição de caminhos de espaço de trabalho em cada mxd de acordo com as instruções da ESRI. Estou com problemas quando acerto um arquivo mxd corrompido. Eles tentaram tentar / exceto e não conseguiram fazer funcionar. A situação ideal seria gravar o nome de arquivo corrompido em um arquivo e seguir em frente para que eu possa retornar a eles no final. Eu sou muito novo com scripts python, qualquer ajuda seria muito 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")
fonte
'w'
(rite) - use'a'
(ppend) como se houvesse mais de um mxd corrompido que você substituirá a cada vez. Além disso, pode ser um exagero, maslogging
vale a pena examinar o módulo Python para registrar erros.'a'
anexá-lo.Isso não tem nada a ver com o seu erro nos MXDs corrompidos, mas como você deseja fazer logon, aqui está um pequeno pedaço básico (praticamente direto dos documentos do Python) usando o
logging
módulo (como sugerido por @om_henners). O comentário do @sgillies acima parece excelente também.Quando executado como está, fornece:
fonte