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