Projects 폴더에 모든 mxd 파일 목록 (전체 경로 지정)을 만드는 데 사용하는 Python 스크립트가 있습니다. 그런 다음 스크립트는이를 사용하여 목록을 반복하고 ESRI의 방법에 따라 각 mxd에서 findandreplaceworkspacepaths를 수행합니다. 손상된 mxd 파일을 쳤을 때 문제가 발생합니다. 시도 / 제외를 시도했지만 작동하지 않았습니다. 이상적인 상황은 손상된 파일 이름을 파일에 쓰고 계속해서 끝까지 다시 돌아올 수 있도록하는 것입니다. 나는 파이썬 스크립팅을 매우 처음 접했고 도움을 주시면 감사하겠습니다.
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'
. 매번 덮어 쓰는 손상된 mxd가 두 개 이상인 것처럼 대신 (ppend)를 사용하십시오. 또한 과잉 일 수도 있지만 Pythonlogging
모듈은 오류를 기록 할 가치가 있습니다.