<?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 Put Shapefile name into attribute table in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/put-shapefile-name-into-attribute-table/m-p/300797#M23313</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I iterate through a list of shapefiles and do some geoprocessing chains and field calculations for each of the input shapes (works fine).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The result is a dbf for each of the input shapefiles. Now I'd like to write the name of the input shapes into a field in the output dbf and then merge the dbfs. Merging works also fine. The naming process worked fine using ArcGIS 10 or 10.1, but fails using ArcGIS 10.2 and Python 2.7.3.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Some snippets:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;

#Blabla Environment + Import
(...)

#List FCs

name = []
x = 0
fcList = arcpy.ListFeatureClasses()

for fc in fcList:
&amp;nbsp;&amp;nbsp;&amp;nbsp; print fc
&amp;nbsp;&amp;nbsp;&amp;nbsp; name.insert(x, fc.split(".")[0])
&amp;nbsp;&amp;nbsp;&amp;nbsp; x += 1


#Blabla Geoprocessing

(...)


#Write Name into output dbf and merge
x=0
for fc in fcList:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(input&lt;X&gt;,"NAME", "TEXT")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(input&lt;X&gt;,"NAME", "name&lt;X&gt;", "PYTHON")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x += 1&amp;nbsp;&amp;nbsp; 

out = outws + "Merge" + ".dbf"
result = arcpy.Merge_management (input, out)
&lt;/X&gt;&lt;/X&gt;&lt;/X&gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Printing x, the input&lt;X&gt; and name&lt;X&gt; returns the right values for x and the file names (e.g. B, C, D, E, F). But only the first name is written into the table, e.g.:&lt;/X&gt;&lt;/X&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;FID------BLA----NAME&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 --------&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp; ------B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1 --------&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp; ------B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2 --------&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp; ------B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3 --------&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp; ------B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4 --------&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp; ------B&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any idea? By the way, I get now error message, but the info "returned exit code 0".&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kathrin&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 03 Dec 2013 14:44:37 GMT</pubDate>
    <dc:creator>KathrinSchulte-Braucks</dc:creator>
    <dc:date>2013-12-03T14:44:37Z</dc:date>
    <item>
      <title>Put Shapefile name into attribute table</title>
      <link>https://community.esri.com/t5/python-questions/put-shapefile-name-into-attribute-table/m-p/300797#M23313</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I iterate through a list of shapefiles and do some geoprocessing chains and field calculations for each of the input shapes (works fine).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The result is a dbf for each of the input shapefiles. Now I'd like to write the name of the input shapes into a field in the output dbf and then merge the dbfs. Merging works also fine. The naming process worked fine using ArcGIS 10 or 10.1, but fails using ArcGIS 10.2 and Python 2.7.3.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Some snippets:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;

#Blabla Environment + Import
(...)

#List FCs

name = []
x = 0
fcList = arcpy.ListFeatureClasses()

for fc in fcList:
&amp;nbsp;&amp;nbsp;&amp;nbsp; print fc
&amp;nbsp;&amp;nbsp;&amp;nbsp; name.insert(x, fc.split(".")[0])
&amp;nbsp;&amp;nbsp;&amp;nbsp; x += 1


#Blabla Geoprocessing

(...)


#Write Name into output dbf and merge
x=0
for fc in fcList:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(input&lt;X&gt;,"NAME", "TEXT")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(input&lt;X&gt;,"NAME", "name&lt;X&gt;", "PYTHON")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x += 1&amp;nbsp;&amp;nbsp; 

out = outws + "Merge" + ".dbf"
result = arcpy.Merge_management (input, out)
&lt;/X&gt;&lt;/X&gt;&lt;/X&gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Printing x, the input&lt;X&gt; and name&lt;X&gt; returns the right values for x and the file names (e.g. B, C, D, E, F). But only the first name is written into the table, e.g.:&lt;/X&gt;&lt;/X&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;FID------BLA----NAME&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0 --------&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp; ------B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1 --------&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp; ------B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2 --------&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp; ------B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3 --------&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp; ------B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4 --------&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp;&amp;nbsp; ------B&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any idea? By the way, I get now error message, but the info "returned exit code 0".&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kathrin&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Dec 2013 14:44:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/put-shapefile-name-into-attribute-table/m-p/300797#M23313</guid>
      <dc:creator>KathrinSchulte-Braucks</dc:creator>
      <dc:date>2013-12-03T14:44:37Z</dc:date>
    </item>
    <item>
      <title>Re: Put Shapefile name into attribute table</title>
      <link>https://community.esri.com/t5/python-questions/put-shapefile-name-into-attribute-table/m-p/300798#M23314</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Calculate field calculates the values for all rows, unless there is a selection on the layer... You possibly need an update cursor...?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I still don't entirely understand what you are doing, but maybe this will help:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro"&gt;arcpy.CalculateField_management(input&lt;X&gt;,"NAME", "%s" % name&lt;X&gt;, "PYTHON")&lt;/X&gt;&lt;/X&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The difference is that &lt;/SPAN&gt;&lt;STRONG&gt;name&lt;X&gt;&lt;/X&gt;&lt;/STRONG&gt;&lt;SPAN&gt; is a variable in your script, the CalculateField can't really access it in the normal way (or at all, which might be causing your error). The line above is simply setting the field to a string, and the string is defined within the script, so it will update with each x.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If this doesn't answer your question please post an explanation of your desired output versus what is actually coming out (you did this part last time, but I still don't know how that differs from what you are after).&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Dec 2013 18:17:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/put-shapefile-name-into-attribute-table/m-p/300798#M23314</guid>
      <dc:creator>StacyRendall1</dc:creator>
      <dc:date>2013-12-03T18:17:13Z</dc:date>
    </item>
    <item>
      <title>Re: Put Shapefile name into attribute table</title>
      <link>https://community.esri.com/t5/python-questions/put-shapefile-name-into-attribute-table/m-p/300799#M23315</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I think it has to do with the string value of your formula for calculating the name of the feature.&amp;nbsp; Note the double quotes holding the name in single quotes by substituting string values in the third part of the arcpy.CalculateField_management() method.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;solution:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
import os
import arcpy

fieldNameToAdd = "NAME"

try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; shpDir = r"C:\ShapeFileDir"
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.workspace = shpDir

&amp;nbsp;&amp;nbsp;&amp;nbsp; fcList = arcpy.ListFeatureClasses()

&amp;nbsp;&amp;nbsp;&amp;nbsp; for fc in fcList:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "processing: %s" % (fc)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fcName = fc.split(".")[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fcPath = shpDir + os.sep + fc
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # blah geoprocessing ...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fLength = len(fcName)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # check if field "Name" already exists
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; existingFields = arcpy.ListFields(fcPath)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for field in existingFields:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print field.name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if field.name.lower() == fieldNameToAdd.lower():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "the field named %s already exists.&amp;nbsp; Try again or follow the commented instructions below." % (fieldNameToAdd)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #raise # exception
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #OR
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.DeleteField_management(fcPath, fieldNameToAdd)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # blah continue working
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(fcPath,fieldNameToAdd, "TEXT", None, None, fLength)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(fcPath,fieldNameToAdd, "'%s'" % (fcName), "PYTHON")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # blah more geoprocessing...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
except:
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "there was an error"
&amp;nbsp;&amp;nbsp;&amp;nbsp; print arcpy.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp; #import traceback
&amp;nbsp;&amp;nbsp;&amp;nbsp; #raise
&amp;nbsp;&amp;nbsp;&amp;nbsp; #etc
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:26:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/put-shapefile-name-into-attribute-table/m-p/300799#M23315</guid>
      <dc:creator>MaxSquires</dc:creator>
      <dc:date>2021-12-11T14:26:06Z</dc:date>
    </item>
    <item>
      <title>Re: Put Shapefile name into attribute table</title>
      <link>https://community.esri.com/t5/python-questions/put-shapefile-name-into-attribute-table/m-p/300800#M23316</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank you both very much!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This &lt;/SPAN&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro"&gt;arcpy.CalculateField_management(input&lt;X&gt;,"NAME", "'%s'" % (name&lt;X&gt;), "PYTHON")&lt;/X&gt;&lt;/X&gt;&lt;/PRE&gt;&lt;SPAN&gt; did the trick!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Dec 2013 11:32:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/put-shapefile-name-into-attribute-table/m-p/300800#M23316</guid>
      <dc:creator>KathrinSchulte-Braucks</dc:creator>
      <dc:date>2013-12-04T11:32:53Z</dc:date>
    </item>
  </channel>
</rss>

