Projeler klasörümüzde (tam yol ile) tüm mxd dosyalarının bir listesini oluşturmak için kullandığım bir python komut dosyası var. Komut dosyası daha sonra listeyi yinelemek ve her bir mxd'de nasıl yapılacağını gösteren bir findandreplaceworkspacepath yapmak için kullanır. Bozuk bir mxd dosyasına çarptığımda sorunla karşılaşıyorum. Denedim denedim / hariç ve işe aldık değil. İdeal durum, bozuk dosya adını bir dosyaya yazmak ve devam etmek, böylece sonunda onlara geri dönebilirim. Python komut dosyalarında çok yeniyim, herhangi bir yardım çok takdir edilecektir.
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) ile açmayın -'a'
her seferinde üzerine yazacağınız birden fazla bozuk mxd varmış gibi (ppend) kullanın. Ayrıca, aşırıya kaçmış olabilir, ancak Pythonlogging
modülü hataları kaydetmeye değer olabilir.