I am trying to execute a calculate field in arcpy from ArcGIS Pro 2.7. Here is the relevant code.
#a confirmed existing shapefile ....
out_fc = r'C:\GIS\telemetrytags\individual_fish_individual_days\112_2019-04-12.shp'
# a confirmed and working add field....
arcpy.AddField_management(out_fc, 'TagID', "SHORT")
#The existing field name...
tagid = "TagID"
#The value to populate TagID with...in this case the value of tag is a float (with a value of 112.0) before I #convert it to an int and then string.
value = str(int(tag))
#code fails here with the message below.
arcpy.CalculateFields_management(out_fc, tagid, value, "PYTHON3")
Error Info:
Failed to execute. Parameters are not valid.
ERROR 000800: The value is not a member of Python 3 | Arcade.
ERROR 000728: Field 112 does not exist within table
Failed to execute (CalculateFields).
112 is the value I am trying to populate field TagID with and not the field name so I do not understand what is up with that error.
Another oddity - when I add my shapefile to ArcGIS pro and check the TagID field it returns that the field is a type Long with is not what I am doing with the calculate field.
Why is this 'the most simple of calculations' failing in arcpy for ArcGIS Pro 2.7
Solved! Go to Solution.
You're trying to use the syntax for Calculate Field with the Calculate Fields tool. The syntax for Calculate Fields is:
arcpy.CalculateFields_management(in_table, expression_type, fields, {code_block}, ...)
#Or
arcpy.management.CalculateFields(in_table, expression_type, fields, {code_block}, ...)
The syntax for Calculate Field is:
arcpy.management.CalculateField(in_table, field, expression, {expression_type}, {code_block}, etc...)
#Or
arcpy.CalculateField_management(in_table, field, expression, {expression_type}, {code_block}, etc...)
As you're only calculating a single field, just change to using the Calculate Field tool:
arcpy.CalculateField_management(out_fc, tagid, value, "PYTHON3")
#Or
arcpy.management.CalculateField(out_fc, tagid, value, "PYTHON3")
You're trying to use the syntax for Calculate Field with the Calculate Fields tool. The syntax for Calculate Fields is:
arcpy.CalculateFields_management(in_table, expression_type, fields, {code_block}, ...)
#Or
arcpy.management.CalculateFields(in_table, expression_type, fields, {code_block}, ...)
The syntax for Calculate Field is:
arcpy.management.CalculateField(in_table, field, expression, {expression_type}, {code_block}, etc...)
#Or
arcpy.CalculateField_management(in_table, field, expression, {expression_type}, {code_block}, etc...)
As you're only calculating a single field, just change to using the Calculate Field tool:
arcpy.CalculateField_management(out_fc, tagid, value, "PYTHON3")
#Or
arcpy.management.CalculateField(out_fc, tagid, value, "PYTHON3")