From: thompson.marisa on 20 Dec 2006 14:08 Hi. I'm extremely new to Python and programming as a whole. I have written a python script with the assistance of ESRI ArcGIS 9.2, which uses Python 2.4.1, however, it gives me this error when I try to run it. I've already posted at ESRI support, and I was hoping that Python people could help me more. I hope there is something simple I could do to be able to define the object that it thinks is NoneType. Please when someone responds, please treat me as an absolute novice. Thank you, Marisa Here is my code: # --------------------------------------------------------------------------- # towntab92.py # Created on: Wed Dec 20 2006 11:09:59 AM # (generated by ArcGIS/ModelBuilder) # Created by Marisa Thompson # --------------------------------------------------------------------------- # Import system modules import sys, string, os, arcgisscripting # Create the Geoprocessor object gp = arcgisscripting.create() # Check out any necessary licenses gp.CheckOutExtension("spatial") # Load required toolboxes... gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Spatial Analyst Tools.tbx") # Define workspace gp.workspace = "F:/Marisa/inputfolder" # Define Variables raster = "F:/Marisa/outputfolder_72/mss-72-spf.img" #Get list of Town Shapefiles Townshp = gp.ListFeatureClasses ("*") #Store path to output folder outputPath = "F:/Marisa/outputfolder_72" # Begin going through the loop Townshp = Townshps.next() while Townshps !="": #Set the output name to be the same as input outName = outputPath + "/" + Townshp + "land" + ".img" Output_table = outputPath + "/" + Townshp + "table" + ".dbf" #For each extract by Mask gp.ExtractbyMask_sa (raster, Townshp, outName) #For each tabluate area gp.TabulateArea_sa (Townshp, "RITOWN5K_", outName, "VALUE", Output_table, "98.425") Townshp = Townshps.next()
From: Fredrik Lundh on 20 Dec 2006 14:22 thompson.marisa(a)gmail.com wrote: > I'm extremely new to Python and programming as a whole. I have written > a python script with the assistance of ESRI ArcGIS 9.2, which uses > Python 2.4.1, however, it gives me this error when I try to run it. > I've already posted at ESRI support, and I was hoping that Python > people could help me more. > > I hope there is something simple I could do to be able to define the > object that it thinks is NoneType. that would be the None object. http://effbot.org/pyref/None which is often used as a placeholder in Python. my guess is that it's the next() call that returns None when you've reached the end of the shapefile list; try changing while Townshps !="": to while Townshps is not None: and see if the problem goes away. if you still get an exception, please post the full traceback; see http://effbot.org/pyfaq/tutor-i-need-help-im-getting-an-error-in-my-program-what-should-i-do for details. </F>
From: Mark Peters on 20 Dec 2006 14:33 > # Begin going through the loop > Townshp = Townshps.next() > while Townshps !="": > #Set the output name to be the same as input > outName = outputPath + "/" + Townshp + "land" + ".img" > Output_table = outputPath + "/" + Townshp + "table" + ".dbf" > #For each extract by Mask > gp.ExtractbyMask_sa (raster, Townshp, outName) > #For each tabluate area > gp.TabulateArea_sa (Townshp, "RITOWN5K_", outName, "VALUE", > Output_table, "98.425") > Townshp = Townshps.next() Warning: I know nothing about the Python ArcGIS stuff. The first thing that jumps out at me is your while condition. You are testing "Townshps" when it seems from the code that you should be testing "Townshp". However, the typical Python way to iterate through a list for be to use a for loop. Perhaps replace the while statement with: for Townshp in Townshps: and remove the "Townshp = Townshps.next()" lines If that doesn't do it, please post the entire traceback message that you are seeing (copy and paste it) and it should tell us a lot more about your error.
From: Carsten Haese on 20 Dec 2006 14:39 On Wed, 2006-12-20 at 20:22 +0100, Fredrik Lundh wrote: > thompson.marisa(a)gmail.com wrote: > > > I'm extremely new to Python and programming as a whole. I have written > > a python script with the assistance of ESRI ArcGIS 9.2, which uses > > Python 2.4.1, however, it gives me this error when I try to run it. > > I've already posted at ESRI support, and I was hoping that Python > > people could help me more. > > > > I hope there is something simple I could do to be able to define the > > object that it thinks is NoneType. > > that would be the None object. > > http://effbot.org/pyref/None > > which is often used as a placeholder in Python. > > my guess is that it's the next() call that returns None when you've > reached the end of the shapefile list; try changing > > while Townshps !="": > > to > > while Townshps is not None: > > and see if the problem goes away. Actually those will both lead to an infinite loop, since you're comparing the entire list, which is unlikely to ever become "" or None. You should compare Townshp, not Townshps, to "" or None, whichever the .next() method actually returns to signal the end of the list. Then again, I have the sneaking suspicion that you didn't post the actual code that you're running. The code you posted looks like it should raise a NameError in the line that says "Townshp = Townshps.next()". -Carsten
From: Fredrik Lundh on 20 Dec 2006 14:39
Fredrik Lundh wrote: > while Townshps is not None: or rather, while Townshp is not None: since that's the variable you're using later on. </F> |