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
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: 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)
- 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'
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)
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)
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.