import arcpy # Local Variables address = r'G:\Testing\textTest\addtest.shp' keep = ['FID','FULL_ADD', 'ESN', 'CITY', 'ZIP'] # be SURE to include FID/OBJECTID field here! try: discard = [] for field in [f.name for f in arcpy.ListFields(address)if f.type <> 'Geometry']: if field not in keep: discard.append(field) arcpy.DeleteField_management(address, discard) except: arcpy.GetMessages(2)
keepList = ["FIELD1","FIELD2"] fieldNames = [f.name for f in arcpy.Describe(inTable).Fields if not \ (f.type in ["OID","Geometry"] or \ f.name in ["Shape_Length","Shape_Area"] or \ f.name.upper() in keepList )] if fieldNames: arcpy.DeleteField_management(inTable,fieldNames)
- You can't delete the OID field
import arcpy # Local Variables address = r'G:\Testing\textTest\addtestCopy.shp' keep = ['FULL_ADD', 'ESN', 'CITY', 'ZIP'] try: discard = [] for field in [f.name for f in arcpy.ListFields(address)if f.type <> 'Geometry']: if field not in keep: if field == 'FID' or field == 'OBJECTID': pass else: discard.append(field) print discard arcpy.DeleteField_management(address, discard) print 'done' except: arcpy.GetMessages(2)
keep = ['FULL_ADD', 'ESN', 'CITY', 'ZIP'] discard = [] for field in [f.name for f in arcpy.ListFields(address) if f.type <> 'OID' and f.type <> 'Geometry']: if field not in keep: discard.append(field) arcpy.DeleteField_management(address, discard) print 'done'
from arcpy import env try: env.qualifiedFieldNames = False inFeature = scratch+"\\SK.shp" inLayer = "SK_lyr" joinFeature = current+"\\SK_Point" joinLayer = "SK_Point_lyr" inLayerField = "CID" joinLayerField = "CID" outFeature = current+"\\SK_Poly" arcpy.MakeFeatureLayer_management(inFeature, inLayer) arcpy.MakeFeatureLayer_management(joinFeature, joinLayer) arcpy.AddJoin_management(inLayer, inLayerField, joinLayer, joinLayerField, "KEEP_ALL") arcpy.CopyFeatures_management(inLayer, outFeature) except Exception, e: import traceback, sys tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno print e.message infc = current+"\\SK_Poly" keep = ["CID", "TYPE", "STATUS", "X", "Y"] try: discard = [] for field in [f.name for f in arcpy.ListFields(infc) if f.type <> 'OID' and f.type <> 'Geometry']: if field not in keep: discard.append(field) arcpy.DeleteField_management(infc, discard) except: arcpy.GetMessages(2)
keep = ["CID", "TYPE", "STATUS", "X", "Y"]
discard = [f.name for f in arcpy.ListFields(outFeature)
if f.type not in ('OID', 'Geometry')
and f.name not in keep]:
arcpy.DeleteField_management(outFeature, discard)
from arcpy import env try: inFC = current+"\\SK_Poly" updatedFC = scratch+"\\Test.shp" desc = arcpy.Describe(inFC) arcpy.CopyFeatures_management(inFC, updatedFC) fieldObjList = arcpy.ListFields(updatedFC) fieldNameList = [] keep = ["CID", "TYPE", "STATUS", "X", "Y"] for field in fieldObjList: if not field.required and field.name not in keep: fieldNameList.append(field.name) arcpy.DeleteField_management(updatedFC, fieldNameList) except Exception, e: # If an error occurred, print line number and error message import traceback, sys tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno print e.message