A script I made creates domains within a selected geodatabase.
I need it to not create the domains if they already exist because if they do, it gives an error saying invalid domain name.
What's the best way to check if a domain exists?
A script I made creates domains within a selected geodatabase.
I need it to not create the domains if they already exist because if they do, it gives an error saying invalid domain name.
What's the best way to check if a domain exists?
arcpy.Exists doesn't handle domains. The ESRI help indicates what it does handle.
So you'll need to get a list of existing domains, and then check your potential new name against the list. What version of ArcGIS are you using? 10.1 introduces a new ListDomains
function.
If you're on ArcGIS 10.0, then you don't have this ListDomains
. In that case I think you should go with the answer to How to check if domain already exists?, which describes how to use the workspace Describe
function to check for existence.
If you're on ArcGIS 10.1, then you can try out the new ListDomains
function (data access module) to get a list of existing domain names for a geodatabase, and then compare your potential new name to the list of existing names.
Something like this:
myNewDomains = ['new one', 'new two']
existingDomains = arcpy.da.ListDomains("C:/xyz/xyz.gdb")
for myNewDomain in myNewDomains:
# check if myNewDomain already exists
found = False
for domain in existingDomains:
if domain.name == myNewDomain:
found = True
break
# if myNewDomain doesn't already exist, then create it
if found = False:
#
# drop in your domain-creation code
#
else:
print "Domain already exists:", myNewDomain