Mam skrypt Pythona, którego używam do utworzenia listy wszystkich plików mxd (z pełną ścieżką) w naszym folderze Projekty. Następnie skrypt używa go do iteracji listy i wykonywania ścieżek szukania / odnawiania na każdym mxd zgodnie z instrukcją ESRI. Mam problemy z trafieniem uszkodzonego pliku MXD. Próbowali wypróbować / wyjątek i nie udało im się go uruchomić. Idealną sytuacją byłoby zapisanie uszkodzonej nazwy pliku do pliku i przejście dalej, aby na koniec móc do nich wrócić. Jestem bardzo nowy w skryptach Pythona, każda pomoc byłaby bardzo mile widziana.
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")
źródło
'w'
(rite) -'a'
zamiast tego użyj (ppend), jakby za każdym razem było więcej niż jeden uszkodzony plik mxd. Ponadto może to być przesada, alelogging
warto sprawdzić moduł Python, aby rejestrować błędy.'a'
do dołączenia.Nie ma to nic wspólnego z błędem na uszkodzonych dyskach MXD, ale ponieważ chcesz się zalogować, oto mały samorodek (prawie prosto z dokumentacji Pythona) przy użyciu
logging
modułu (jak sugeruje @om_henners). Komentarz @sgillies powyżej również wygląda doskonale.Po uruchomieniu w stanie, w jakim się znajduje, daje:
źródło