I have a SDE feature data set with certain feature class I need to delete. I need to be able to delete them by name, because there are other feature class in there that I do not need to delete.
I have the following, it runs but it doesn't delete anything. I get no error either.
I am using this in a Calculate Value model.
Expression
FEMA1()
Code block
import arcpy, os
def FEMA1():
arcpy.env.workspace = r"C:/Users/***/AppData/Roaming/Esri/ArcGISPro/Favorites/***.sde/CCDS.CCDS.TempLyrs"
cws = arcpy.env.workspace
fc_Delete = ["CCDS.CCDS.FEMA_FLOOD_ZONES_Temp","CCDS.CCDS.FLOODWAY_Temp","CCDS.CCDS.LOMAs_Temp","CCDS.CCDS.LOMRs_Temp","CCDS.CCDS.FEMA_Cross_Sections_Temp","CCDS.CCDS.FEMA_Base_Flood_Elevations_Temp", "CCDS.CCDS.FEMA_PANELS_Temp"]
for fc in fc_Delete:
fc_path = os.path.join(cws, fc)
if arcpy.Exists(fc_path):
arcpy.Delete_management(fc_path)
else:
return ("Feature classes do not exist")
I'm not entirely familiar with this arcpy command, but it looks like the error is that there is no reference to the Return value of the arcpy.Exists line of your code. It should be formatted so that if the return value is the boolean value for True that the next line of code runs or skips if it is not true.
-Derek Wood
There must be some formatting issue with the path of the feature class. Try running this as a standalone script and tinker with the path until you figure out the problem.
import arcpy
import os
arcpy.env.workspace = r"C:/Users/***/AppData/Roaming/Esri/ArcGISPro/Favorites/***.sde/CCDS.CCDS.TempLyrs"
cws = arcpy.env.workspace
fc_known_to_exist = os.path.join(cws, "CCDS.CCDS.FEMA_FLOOD_ZONES_Temp")
if arcpy.Exists(fc_known_to_exist):
print(f"The feature class exists: {fc_known_to_exist}")
else:
print(f"{fc_known_to_exist} does NOT exist.")
Adding on to this: is the "CCDS.CCDS.TempLyrs" in your workspace string a Dataset?
First thing I would try is to remove it, as I don't think it's needed.
Code does run fine as standalone script.
Expression/Code Block. Looks like maybe you are trying to run this in the Calculate Field tool?
Are you trying to delete feature class(es) or update the value in an attribute table or both?
R_
Trying to delete feature classes by name if they exist.
@CCWeedcontrol wrote:I am using this in a Calculate Value model.
This needs to be in a script tool or somewhere else other than in a Calculate Field operation.
Calculate Field only calculates the values of a field for a feature class, feature layer, or raster.
That is what I figured. So if I had to do this in model builder how would I go about it?
I've tried creating a model using a "If data Exists" and Iterate Feature class but was unsuccessful.