Saya memiliki skrip python yang saya gunakan untuk membuat daftar semua file mxd (dengan pathing lengkap) di folder Projects kami. Script kemudian menggunakannya untuk beralih melalui daftar dan melakukan pencarian dan membuat laporan pada setiap mxd sesuai ESRI. Saya mengalami masalah ketika saya menabrak file mxd yang rusak. Mereka telah mencoba / kecuali dan belum berhasil. Situasi yang ideal adalah menulis nama file yang rusak ke file dan melanjutkan sehingga saya bisa kembali kepada mereka di akhir. Saya sangat baru dengan skrip python, bantuan apa pun akan sangat dihargai.
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")
sumber
'w'
(ritus) - gunakan'a'
(ppend) sebagai gantinya seolah-olah ada lebih dari satu mxd yang rusak Anda akan menimpa setiap kali. Juga, itu mungkin berlebihan, tetapilogging
modul Python mungkin layak dilihat untuk merekam kesalahan.'a'
untuk menambahkan.Ini tidak ada hubungannya dengan kesalahan Anda pada MXDs yang korup, tetapi karena Anda ingin login, ini adalah nugget bertelanjangi (cukup banyak langsung dari dokumen Python) menggunakan
logging
modul (seperti yang disarankan oleh @om_henners). Komentar @sgillies di atas terlihat sangat baik juga.Ketika dijalankan apa adanya, ia memberikan:
sumber