I'm trying to populate a field using a function. When I run this in Pyscripter, it works fine:
d = {}
# Function #
def find_dups(val):
d[val] = d.setdefault(val, -1) + 1
return d[val]
#
expression = "find_dups(!LINK_ID!)"
arcpy.CalculateField_management(streets, "dups", expression, "PYTHON_9.3", "#")
However, when running it from arc toolbox I get this...
ExecuteError: ERROR 000539: Error running expression: find_dups(!LINK_ID!)
NameError: name 'find_dups' is not defined
Failed to execute (CalculateField).*
So it looks like it can't find the function. I tried using the field calculator in arc to get a python snippet and it gave me this...
arcpy.CalculateField_management(streets,"dups","find_duplicates(!LINK_ID!)","PYTHON_9.3","d = {}/n/ndef find_duplicates(val):/n d[val] = d.setdefault(val, -1) + 1/n return d[val]/n")
When I tried to put this into my script, however, it didn't work??
ExecuteError: Failed to execute. Parameters are not valid.
ERROR 000989: Python syntax error: Parsing error
SyntaxError: invalid syntax (line 1)