This function maps the field types reported by Describe or Field to the keyword used by the Add Field tool.
def AddFieldType(tbl, field_name): """Determines keyword to create a field with the AddField tool of the same type as the specified field. Integer > "LONG", Float -> "SINGLE" etc example AddFieldType("test.dbf", "Shape_Leng") "DOUBLE" arcpy.AddField_management("test.dbf", "Shape_Len2", AddFieldType("test.dbf", "Shape_Leng")) """ dtypes = {'OID': 'LONG', 'SmallInteger': 'SHORT', 'Integer': 'LONG', 'Double': 'DOUBLE', 'Single': 'FLOAT', 'String': 'TEXT', 'Date': 'DATE'} fld_list = arcpy.Describe(tbl).Fields ftype = [f.type for f in fld_list if f.name.upper() == field_name.upper()] if not ftype: raise Exception("Field {} not found".format(field_name)) ftype = ftype[0] try: return dtypes[ftype] except KeyError: msg = "{}: field type {} not supported".format(field_name, ftype) raise Exception(msg)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.