Accidentally posted this in the general stack overflow forum first.
I have a large (>1000) number of shape-files in which there are fields containing numbers that are defined as text fields. I need to have a fields containing these values as numbers. I can add the new fields, but I'm failing to when I try to populate them.
I'm using ArcGis 10.1. Fields may have values ranging from 0-10, and including up to one decimal place, or they may be empty for a variable (actually blank, no placeholder).
Below is the python script I'm using for two of the variables (
N_CFY), and the error I get. I think my problem is in how to transfer the text value into the Decimal conversion.
I'm new to scripting, so please excuse me if my description or word choices are unclear.
import arcpy, os, sys from arcpy import env from decimal import * arcpy.env.overwriteOutput = True env.workspace = "C:\Users\OuelletteMS\Desktop\Ice_Data_testarea" listFCs = arcpy.ListFeatureClasses("*") for fc in listFCs: print str("processing " + fc) # displays the file that is currently being handled strNCT = "N_CT" # the current, text version of the field newNCT = "NCT" # the new, number version I want to create strNCFY = "N_CFY" # the current, text version of the field newNCFY = "NCFY" # the new, number version I want to create arcpy.AddField_management(fc,newNCT,"DOUBLE") arcpy.AddField_management(fc,newNCFY,"DOUBLE") cursor = arcpy.UpdateCursor(fc) for row in cursor: row.setValue(newNCT, row.getValue(Decimal(strNCT))) row.setValue(newNCFY, row.getValue(Decimal(strNCFY))) cursor.updateRow(row)
Runtime error Traceback (most recent call last): File "", line 23, in File "C:\Python27\ArcGIS10.1\Lib\decimal.py", line 548, in new "Invalid literal for Decimal: %r" % value) File "C:\Python27\ArcGIS10.1\Lib\decimal.py", line 3844, in _raise_error raise error(explanation) InvalidOperation: Invalid literal for Decimal: 'N_CT'