मेरे पास एक पायथन स्क्रिप्ट है जिसका उपयोग मैं अपने प्रोजेक्ट फ़ोल्डर में सभी mxd फ़ाइलों (पूर्ण पथ के साथ) की एक सूची बनाने के लिए कर रहा हूं। स्क्रिप्ट तब सूची के माध्यम से पुनरावृत्ति करने के लिए उस का उपयोग करता है और ईएसआरआई के प्रति प्रत्येक mxd पर एक खोज-खोज कार्यक्षेत्रस्पेसपथ करता है। मैं समस्याओं में भाग रहा हूं जब मैंने एक भ्रष्ट 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'
(संस्कार) के साथ नहीं खोलें -'a'
इसके बजाय (ppend) का उपयोग करें जैसे कि एक से अधिक भ्रष्ट mxd हैं जिन्हें आप प्रत्येक बार अधिलेखित करेंगे। इसके अलावा, यह ओवरकिल हो सकता है, लेकिन पायथनlogging
मॉड्यूल रिकॉर्ड त्रुटियों को देखने लायक हो सकता है।