I'm trying to copy data from one field to another field within a loop. The issue I'm having is how to define the field from which data is being copied as a
variable. The field name from which I want to copy data changes with each iteration of the loop based on the input datasets name.
Here is the code and I highlighted where I'm having trouble... I either get an error or the data does not copy but the script runs... depends on how I s
specify the field name variable.
See... arcpy.CalculateField_managment section of the code
# ---------------------------------------------------------------------------
# combine_ecoregion_tree_species.py
# Created on: 2012-04-25 09:17:22.00000
# (generated by ArcGIS/ModelBuilder)
# Description:
# ---------------------------------------------------------------------------
# Import arcpy module
import arcpy
from arcpy import env
# Check out any necessary licenses
arcpy.CheckOutExtension("spatial")
arcpy.env.overwriteOutput = True
# Set Workspace
arcpy.env.workspace = r"\\Sxftcsls001\m\SDL\Data\Forest_Parameters\FHTET\240m\20111019_L48"
rasterList = arcpy.ListRasters("*", "GRID")
listCount = len(rasterList)
print listCount
for r in rasterList:
if(r.startswith ("f")):
print r
# Local variables:
OutWorkspace = "D:\\Risk_Models\\Ecoregion_Tree_Species\\"
eco_id = "D:\\Risk_Models\\Ecoregion_Tree_Species\\eco_id"
Extent = "-2370945 255315 2273055 3189315"
snap = "\\\\Sxftcsls001\\m\\SDL\\Data\\Snap_Grids\\FHTET\\240m\\L48\\snap"
species_pa = OutWorkspace + r
eco_pa = OutWorkspace + "eco_" + r
species_field = str(r)
print r
print " species code is " + species_field
# Process: Con
arcpy.env.snapRaster = snap
arcpy.env.extent = Extent
arcpy.gp.Con_sa(r, 1, species_pa, 0, "\"VALUE\" > 0")
# Process: Combine
arcpy.gp.Combine_sa([species_pa,eco_id], eco_pa)
print "combine complete"
# Process: Add Field
arcpy.AddField_management(eco_pa, "SPECIES", "TEXT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(eco_pa, "OCCUR", "SHORT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
print "add field"
arcpy.CalculateField_management(eco_pa, "SPECIES", "species_field", "PYTHON")
print "Calculate Species Field"
fields = arcpy.ListFields(eco_pa)
fieldnames = [f.name for f in fields]
fname = fieldnames[3]
print fname
fname_calc = [str(fname)]
print fname_calc
print fieldnames
arcpy.CalculateField_management(eco_pa, "OCCUR", "%s" %fname_calc, "PYTHON")
print "calculated Field"