У меня есть скрипт Python, который я использую для создания списка всех файлов MXD (с полным путем) в нашей папке Projects. Затем сценарий использует это для итерации по списку и выполнения findandreplaceworkspacepath для каждого mxd в соответствии с инструкциями ESRI. Я сталкиваюсь с проблемами, когда я ударил поврежденный файл MXD. Они пытались попробовать / кроме, и не получили его на работу. Идеальная ситуация - записать поврежденное имя файла в файл и двигаться дальше, чтобы я мог вернуться к ним в конце. Я очень новичок в написании скриптов на Python, любая помощь будет принята с благодарностью.
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) - используйте'a'вместо него (ppend), как будто существует более одного поврежденного mxd, который вы будете перезаписывать каждый раз. Кроме того, это может быть излишним, ноloggingмодуль Python, возможно, стоит посмотреть, чтобы записывать ошибки.