如何检测地理数据库中的.lock文件

时间:2016-02-26 01:05:24

标签: python testing locking overwrite

我是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,而不是编辑它。

1 个答案:

答案 0 :(得分: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..."