2016-02-26 2 views
0

Я очень новичок в python, но я написал простой скриптовый инструмент python для автоматизации процесса обновления наборов данных мозаики на моей работе. Инструмент работает отлично, но иногда я получаю ужасную ошибку 9999999, или «геодатаза уже существует» при попытке перезаписать данные.
Структура файла c:\users\my.name\projects\ImageryMosaic\Alachua_2014\Alachua_2014_mosaic.gdb. После некоторых исследований я решил, что блокировка помещается в FGDB всякий раз, когда я открываю недавно созданный набор данных мозаики внутри FGDB, чтобы проверить наличие ошибок после запуска инструмента. Я хотел бы иметь возможность перезаписывать данные вместо того, чтобы их удалять, поэтому я использую оператор arcpy.env.overwriteOutput в своем сценарии. Это отлично работает, если я не открою набор данных после запуска инструмента. Поскольку другие люди будут использовать этот инструмент, я не хочу, чтобы они царапали головы в течение нескольких часов, как я, поэтому было бы неплохо, если бы инструмент сценария мог искать наличие файла .Lock в базе геоданных. Таким образом, я мог бы хотя бы предоставить в сценарии утверждение о том, почему инструмент не сработал вместо бесполезной ошибки 9999999. Я знаю о arcpy.TestSchemaLock, но я не думаю, что это сработает в этом случае, так как я не пытаюсь поместить блокировку, и я хочу перезаписать FGDB, а не редактировать его.Как обнаружить .lock-файл в базе геоданных

ответ

0

Позднее, но эта функция ниже проверит файлы блокировки в заданном (gdb) пути.

def lockFileExist(path = None): 
    if path == None: 
     import traceback 
     raise Exception("Invalid Path!") 
    else: 
     import glob 
     full_file_paths = glob.glob(path+"\\*.lock") 
     for f in full_file_paths: 
      if f.endswith(".lock"): 
       return True 
     return False 

if lockFileExist(r"D:\sample.gdb"): 
    print "Lock file found in gdb. Aborting..." 
else: 
    print "No lock files found!. Ready for processing..." 
Смежные вопросы