2016-02-26 25 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..."