List Methods#
List methods can be used to retrieve lists of items to process, such as shapefiles, grids, tables, or fields in a table. Even if GIS objects have multiple files associated (e.g., shapefiles or grid rasters), the geoprocessor allows listing those objects as ESRI recognizes them.
Wildcard is a string with characters to help limit the results. An asterisk (*) is used for missing characters; use only * to return all items. For example, listing all features with the word “tile” anywhere in the name would use a wildcard *tile*.
Function |
Parameters |
|---|---|
|
Wildcard (optional); Type (optional): “POINT”, “LINE”, “POLYGON”, “LABEL” |
|
Wildcard (optional); Type (optional): “GRID”, “TIF”, “JPG”, “GIF”, “IMG”, etc. |
|
Wildcard (optional); Type (optional): “dBase”, “INFO” |
|
Table (required): dbTable, shapefile, grid; Wildcard (optional); Type (optional): Integer, Single, Double, String, Date |
Examples#
List polygon shapefiles starting with N#
import arcpy
# Set the workspace
arcpy.env.workspace = "E:\\myfolder"
# List polygon shapefiles starting with the N character
fcs = arcpy.ListFeatureClasses("N*", "POLYGON")
# Print the list
print(fcs)
Check if a field exists in a shapefile#
import arcpy
# Shapefile to check
shapefile = "E:\\myshapefile.shp"
# The field name
fieldtocheck = "NAME"
# Create a list of fields from a shapefile using the wildcard "NAME".
# If the field "NAME" exists, it returns a list containing one item;
# otherwise the list will be empty.
fields = arcpy.ListFields(shapefile, "NAME")
# If the length of the list is zero (empty), the field doesn't exist
if len(fields) == 0:
print("The field " + fieldtocheck + " doesn't exist")
else:
print("The field " + fieldtocheck + " exists")
List and print TIF raster paths#
import arcpy
# Set the workspace where rasters are
workfolder = "E:\\myfolder"
arcpy.env.workspace = workfolder
# List TIF rasters starting with DEM characters
rasters = arcpy.ListRasters("DEM*", "TIFF")
# Iterate the objects of the list and print the full path
for raster in rasters:
print(workfolder + "\\" + raster)
Add a filename field to shapefiles#
This script adds a text field to the attribute tables of shapefiles and writes the name of each shapefile as the field value.
import arcpy
# Set the workspace where shapefiles are
arcpy.env.workspace = "E:\\myfolder"
# List point shapefiles in the folder
fcs = arcpy.ListFeatureClasses("*", "POINT")
# Iterate through the list
for fc in fcs:
# Define the name of the new field
fieldname = "FILENAME"
# Add a text field with length 20
arcpy.AddField_management(fc, fieldname, "TEXT", "", "", "20", "", "NON_NULLABLE", "NON_REQUIRED", "")
# Define the expression:
# fc is the filename (e.g., myshapefile.shp)
# Select characters from position 0 up to -4 to cut off ".shp"
mytxt = '"' + fc[0:-4] + '"'
# Calculate the field value
arcpy.CalculateField_management(fc, fieldname, mytxt, "VB", "")