ฉันมีสคริปต์ไพ ธ อนที่ฉันใช้เพื่อสร้างรายการไฟล์ mxd ทั้งหมด (พร้อมเส้นทางเต็ม) ในโฟลเดอร์โครงการของเรา จากนั้นสคริปต์จะใช้สิ่งนั้นเพื่อวนซ้ำในรายการและทำ findandreplaceworkspacepaths ในแต่ละ mxd ตามวิธีของ ESRI ฉันพบปัญหาเมื่อฉันกดไฟล์ 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 ที่เสียหายมากกว่าหนึ่งรายการคุณจะเขียนทับทุกครั้ง นอกจากนี้มันอาจ overkill แต่logging
โมดูลPython อาจคุ้มค่าที่จะดูการบันทึกข้อผิดพลาด