3

Is there a way to check if a feature class full path string is a path to a feature class within a file geodatabase feature dataset in arcpy?

For example:

C:\test\test.gdb\testdataset\featureclass

I'd like to return testdataset.

I can't find it in any of the applicable Describe objects. I can do it with string manipulation...

fullpath = r"C:\test\test.gdb\testdataset\featureclass"
pathlen = len(fullpath.split (".gdb")[0]) + 4
namelen = len(fullpath.split ("\\")[-1])
dataset = fullpath[pathlen:-namelen].replace ("\\", "")

This seems like too much code though. Is there a better way?

  • Why not making these lines of code a reusable function? – Farid Cheraghi Mar 13 '15 at 23:09
  • What is your ultimate goal? For example, are you looking to add this in a conditional statement? ` – Aaron Mar 14 '15 at 0:43
4

Maybe this:

>>> #testfc is a fc within a fd, as shown with this catalogPath statement:
>>> desc = arcpy.Describe('testfc')
>>> desc.catalogPath
    u'C:\\Users\\whitley-wayne\\Desktop\\data.gdb\\dataset1\\testfc'
>>>
>>> #this shows how to essentially use the Describe method twice to get the fd name:
>>> desc = arcpy.Describe(fc)
>>> if hasattr(desc, 'path'):
...     descPth = arcpy.Describe(desc.path)
...     if hasattr(descPth, 'dataType'):
...         if descPth.dataType == 'FeatureDataset': 
...             print 'the feature dataset name: {0}'.format(descPth.name)
...             
    the feature dataset name: dataset1
>>> 
4

Use Describe on the feature class parent directory.

if arcpy.Describe(os.path.dirname(path_to_featureclass)).dataType == 'FeatureDataset': 
    do something...
else:
    do something else...

If you don't have the path already, you can get it with the catalogPath property:

arcpy.Describe(featureclass).catalogPath

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.