我有一个python脚本,可用来在Projects文件夹中创建所有mxd文件(具有完整路径)的列表。然后,脚本使用该脚本遍历列表,并按照ESRI的操作在每个mxd上执行findandreplaceworkspacepaths。当我击中损坏的mxd文件时遇到问题。尝试过try / except,但还没有开始工作。理想的情况是将损坏的文件名写入文件并继续前进,这样我可以在最后返回到它们。我是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。同样,这可能是矫kill过正,但是Pythonlogging
模块可能值得一看以记录错误。