Hi,
Can someone please shed some light on why my glob.glob statement is not working?
It works on shapefiles just not feature classes in geodatabases.
I am simply just trying to put in a file path to a feature class in the geodatabase. The file path however needs to include a wild card (*) as the date/name of the folder can change each month.
I have tried the below statement but i get the error below
TC = glob.glob("L:/Support/Data_load/Tenements/%s/SA/Kennels/Popcorns*/Popcorn.gdb/Popcorn123" % (d))[0]
IndexError: list index out of range
Does glob.glob not support geodatabase? and if so is there another solution?
Solved! Go to Solution.
A wildcard used in my examples returns a list of featureclasses like glob.glob.
If you are using the first one, then you would slice as per usual ( [0] ). If there was only one, then you still slice the list.
Or you have a list to cycle through if you are working with many featureclasses.
If you examined the contents of a *.gdb "folder", you will see there is no usable naming convention except through the ListFeatureClasses approach
List all featureclasses in a gdb.
Then list only those that begin with a "b"
import arcpy
gdb = r"C:\arcpro_npg\npg\Project_npg\tests.gdb"
arcpy.env.workspace = gdb
fcs = arcpy.ListFeatureClasses("*")
fcs = arcpy.ListFeatureClasses("b*")
fcs = arcpy.ListFeatureClasses("*")
b_fcs = arcpy.ListFeatureClasses("b*")
fcs
['big', 'odd', 'odd_inters', 'odd_dis', 'odd_sub', 'odd5', 'odd5_centr', 'odd5_inside', 'odd_vert', 'sq', 'sq_v', 'Voronoi', 'Voronoi2', 'x2', 'multi', 'sq2', 'shps', 'v0', 'c', 'sq2_mabr', 'sq2_delaunay', 'c_pnts', 'sq_MeshPnts', 'sq2_vert', 'c_ln', 'c_segs', 'concave_c', 'c_dens', 'sq_diss', 'hex_flat', 'rectangles', 'triangles', 'hex_shift', 'dissolve', 'dissolve1', 'aoi', 'rot', 'CC', 'c0', 'c1', 'CCply', 'c0ply', 'b0b1', 'b0_b1', 'b0_b1_ints', 'b0', 'b0_ints']
b_fcs
['big', 'b0b1', 'b0_b1', 'b0_b1_ints', 'b0', 'b0_ints']
BTW
glob.glob wouldn't be able to decipher any useful filenames and/or extensions. Examine the contents of a *.gdb using windows File Explorer and you will see what I mean
Hi Dan,
Thank you for your response.
How do i use the feature class from the list as a variable though?
i.e How would i use the featureclass 'big' as variable that i can put in other commands? (Like arcpy.addfield)
Also i apologise i was not clear, the wild card is not in the featureclass name but in the folder name. (what you have written is still beneficial as at some stage i will need wild cards for my feature classes)
TC = glob.glob("L:/Support/Data_load/Tenements/%s/SA/Kennels/Popcorns*/Popcorn.gdb" % (d))[0]
I am wanting to use my feature class as a variable that i can use in addfield and other commands, but the wildcard in the folder path is causing errors"
D1 = arcpy.AddField_management(Popcorn123, "Ext_Date", "DATE", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
A wildcard used in my examples returns a list of featureclasses like glob.glob.
If you are using the first one, then you would slice as per usual ( [0] ). If there was only one, then you still slice the list.
Or you have a list to cycle through if you are working with many featureclasses.
If you examined the contents of a *.gdb "folder", you will see there is no usable naming convention except through the ListFeatureClasses approach
Hi Dan,
Ah understood!
Yes in my case there is only one. I have tried the index and it works like a charm 🙂 Thank you
D1 = arcpy.AddField_management(b_fcs[0], "test999", "DATE", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")