У меня есть скрипт 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, возможно, стоит посмотреть, чтобы записывать ошибки.