<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic fieldMap.outputField referencing describe object, not field object in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211084#M16306</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is my first whack at field mapping. I've looked through the history of posts on this issue and have implemented the solutions (as far as I understand them). But it's not working for me.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Basically, when I assign field = fieldMap.outputField, the field variable then references a describe field object object instead of a field object. I can field.name = "NAME" but when I apply that to the field map via fieldMap.outputField(file, field) it bombs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It's my understanding that fieldMap.outputField should return a field object, but for some reason I'm getting a describe object. Any help would be welcome!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14151240342933380" jivemacro_uid="_14151240342933380" modifiedtitle="true"&gt;
&lt;P&gt;# input files and workspaces&lt;/P&gt;
&lt;P&gt;fgdb = r"N:\GDB\GDB.gdb"&lt;/P&gt;
&lt;P&gt;HDMSfile = r"N:\GDB\plants\HDMS.shp"&lt;/P&gt;
&lt;P&gt;GDBfile = r"N:\GDB\GDB.gdb\Occurrence_scriptgen"&lt;/P&gt;
&lt;P&gt;sppfile = r"N:\GDB\GDB.gdb\SpeciesList"&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;# environments set&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;arcpy.env.workspace = fgdb&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# field map preparation&lt;/P&gt;
&lt;P&gt;fieldmappings = arcpy.FieldMappings()&lt;/P&gt;
&lt;P&gt;fm_SiteIdHDMS = arcpy.FieldMap()&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;print "Field map prepared."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;fm_SiteIdHDMS.addInputField(HDMSfile, "EO_ID")&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;fld_SiteIdHDMS = fm_SiteIdHDMS.outputField&lt;/P&gt;
&lt;P&gt;fld_SiteIdHDMS.name = "SiteID_HDMS"&lt;/P&gt;
&lt;P&gt;print fld_SiteIdHDMS.name&lt;/P&gt;
&lt;P&gt;print fld_SiteIdHDMS&lt;/P&gt;
&lt;P&gt;fm_SiteIdHDMS.outputField(GDBfile, fld_SiteIdHDMS)&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Python Interpreter Results:&lt;/P&gt;&lt;P&gt;Field map prepared.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;SiteID_HDMS&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;geoprocessing describe field object object at 0x16A18F80&amp;gt;&lt;/P&gt;&lt;P&gt;Traceback (most recent call last):&lt;/P&gt;&lt;P&gt;&amp;nbsp; File "&amp;lt;string&amp;gt;", line 254, in run_nodebug&lt;/P&gt;&lt;P&gt;&amp;nbsp; File "N:\RarePlants_CNF\PythonScripts\HDMS_to_RarePlantOccurrence.py", line 46, in &amp;lt;module&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fm_SiteIdHDMS.outputField(CNFfile, fld_SiteIdHDMS)&lt;/P&gt;&lt;P&gt;TypeError: 'Field' object is not callable&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;(line 46 corresponds to line 20 of the above scrippet)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 04 Nov 2014 18:06:43 GMT</pubDate>
    <dc:creator>N__R_Wilson</dc:creator>
    <dc:date>2014-11-04T18:06:43Z</dc:date>
    <item>
      <title>fieldMap.outputField referencing describe object, not field object</title>
      <link>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211084#M16306</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is my first whack at field mapping. I've looked through the history of posts on this issue and have implemented the solutions (as far as I understand them). But it's not working for me.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Basically, when I assign field = fieldMap.outputField, the field variable then references a describe field object object instead of a field object. I can field.name = "NAME" but when I apply that to the field map via fieldMap.outputField(file, field) it bombs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It's my understanding that fieldMap.outputField should return a field object, but for some reason I'm getting a describe object. Any help would be welcome!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14151240342933380" jivemacro_uid="_14151240342933380" modifiedtitle="true"&gt;
&lt;P&gt;# input files and workspaces&lt;/P&gt;
&lt;P&gt;fgdb = r"N:\GDB\GDB.gdb"&lt;/P&gt;
&lt;P&gt;HDMSfile = r"N:\GDB\plants\HDMS.shp"&lt;/P&gt;
&lt;P&gt;GDBfile = r"N:\GDB\GDB.gdb\Occurrence_scriptgen"&lt;/P&gt;
&lt;P&gt;sppfile = r"N:\GDB\GDB.gdb\SpeciesList"&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;# environments set&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;arcpy.env.workspace = fgdb&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# field map preparation&lt;/P&gt;
&lt;P&gt;fieldmappings = arcpy.FieldMappings()&lt;/P&gt;
&lt;P&gt;fm_SiteIdHDMS = arcpy.FieldMap()&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;print "Field map prepared."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;fm_SiteIdHDMS.addInputField(HDMSfile, "EO_ID")&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;fld_SiteIdHDMS = fm_SiteIdHDMS.outputField&lt;/P&gt;
&lt;P&gt;fld_SiteIdHDMS.name = "SiteID_HDMS"&lt;/P&gt;
&lt;P&gt;print fld_SiteIdHDMS.name&lt;/P&gt;
&lt;P&gt;print fld_SiteIdHDMS&lt;/P&gt;
&lt;P&gt;fm_SiteIdHDMS.outputField(GDBfile, fld_SiteIdHDMS)&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Python Interpreter Results:&lt;/P&gt;&lt;P&gt;Field map prepared.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;SiteID_HDMS&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;geoprocessing describe field object object at 0x16A18F80&amp;gt;&lt;/P&gt;&lt;P&gt;Traceback (most recent call last):&lt;/P&gt;&lt;P&gt;&amp;nbsp; File "&amp;lt;string&amp;gt;", line 254, in run_nodebug&lt;/P&gt;&lt;P&gt;&amp;nbsp; File "N:\RarePlants_CNF\PythonScripts\HDMS_to_RarePlantOccurrence.py", line 46, in &amp;lt;module&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fm_SiteIdHDMS.outputField(CNFfile, fld_SiteIdHDMS)&lt;/P&gt;&lt;P&gt;TypeError: 'Field' object is not callable&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;(line 46 corresponds to line 20 of the above scrippet)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 04 Nov 2014 18:06:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211084#M16306</guid>
      <dc:creator>N__R_Wilson</dc:creator>
      <dc:date>2014-11-04T18:06:43Z</dc:date>
    </item>
    <item>
      <title>Re: fieldMap.outputField referencing describe object, not field object</title>
      <link>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211085#M16307</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;outputField is a property that returns an object (Field object) that isn't callable.&amp;nbsp; Line 20 is throwing the error.&amp;nbsp; If you are trying to set the property, you need to get the property and change it and then set it back.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;fld = fm_SiteIdHDMS.outputField
fld.name = "Whatever"
fm_SiteIdHDMS.outputField = fld
 &lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 10:23:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211085#M16307</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2021-12-11T10:23:40Z</dc:date>
    </item>
    <item>
      <title>Re: fieldMap.outputField referencing describe object, not field object</title>
      <link>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211086#M16308</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;So it is. I completely missed that.&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 04 Nov 2014 21:01:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211086#M16308</guid>
      <dc:creator>N__R_Wilson</dc:creator>
      <dc:date>2014-11-04T21:01:40Z</dc:date>
    </item>
    <item>
      <title>Re: fieldMap.outputField referencing describe object, not field object</title>
      <link>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211087#M16309</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;These three lines of code have me confused ... specifically the last line:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="_jivemacro_uid_14320712049167038 jive_macro_code jive_text_macro" data-renderedposition="50_8_912_16" jivemacro_uid="_14320712049167038"&gt;&lt;P&gt;fm_SiteIdHDMS.output = fld&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The first two lines make sense. Set the output field name to "Whatever". However, once the property is set, why does it need to be changed back? Isn't this undoing what was just done?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, could the first two lines simply be changed to:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14320712700807758 jive_text_macro" data-renderedposition="192_8_912_16" jivemacro_uid="_14320712700807758"&gt;&lt;P&gt;fm_SiteIdHDMS.outputField.name = "Whatever"&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is this stylistic or is there a Pythonic/logical reason for the "fld" alias? (I find the latter hard to read.)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 May 2015 21:45:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211087#M16309</guid>
      <dc:creator>Waan</dc:creator>
      <dc:date>2015-05-19T21:45:38Z</dc:date>
    </item>
    <item>
      <title>Re: fieldMap.outputField referencing describe object, not field object</title>
      <link>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211088#M16310</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I did notice a typo on Line 3 of my original code, so I went back and fixed it.&amp;nbsp; Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My answer to your question is touched on in my response to the OP.&amp;nbsp; AFAIK, properties of ArcPy objects cannot be modified in place.&amp;nbsp; Instead, users must get the property, modify the returned object, and then set the property.&amp;nbsp; Trying what you suggest:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;gt;&amp;gt;&amp;gt; #Create temporary, in-memory feature class
&amp;gt;&amp;gt;&amp;gt; fc = arcpy.CreateFeatureclass_management('in_memory','fc',"POINT")
&amp;gt;&amp;gt;&amp;gt; arcpy.AddField_management(fc, "Example","TEXT")
&amp;lt;Result 'in_memory\\fc'&amp;gt;
&amp;gt;&amp;gt;&amp;gt; #Create FieldMap object and add input field
&amp;gt;&amp;gt;&amp;gt; fm = arcpy.FieldMap()
&amp;gt;&amp;gt;&amp;gt; fm.addInputField(fc, "Example")
&amp;gt;&amp;gt;&amp;gt; fm.outputField.name
u'Example'
&amp;gt;&amp;gt;&amp;gt; #Try to change field name in place
&amp;gt;&amp;gt;&amp;gt; fm.outputField.name = "Whatever"
&amp;gt;&amp;gt;&amp;gt; fm.outputField.name
u'Example'
&amp;gt;&amp;gt;&amp;gt; #Change field name by getting, modifying, and setting Field object
&amp;gt;&amp;gt;&amp;gt; fld = fm.outputField
&amp;gt;&amp;gt;&amp;gt; fld.name = "Whatever"
&amp;gt;&amp;gt;&amp;gt; fm.outputField = fld
&amp;gt;&amp;gt;&amp;gt; fm.outputField.name
u'Whatever'&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To footnote my own comment above, properties can be set directly if a user can construct or construct and modify the correct object without getting the property first.&amp;nbsp; For example, properties that are strings can be changed by setting the property with a new string:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;gt;&amp;gt;&amp;gt; fld = arcpy.Field()
&amp;gt;&amp;gt;&amp;gt; fld.name
u''
&amp;gt;&amp;gt;&amp;gt; fld.name = "Whatever"
&amp;gt;&amp;gt;&amp;gt; fld.name
u'Whatever'&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 10:23:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/fieldmap-outputfield-referencing-describe-object/m-p/211088#M16310</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2021-12-11T10:23:42Z</dc:date>
    </item>
  </channel>
</rss>

