Newby Needs Help with Python code

Rami Chowdhury rami.chowdhury at merton.oxon.org
Wed Sep 1 07:28:37 EDT 2010


Hi Esther,

On Wed, Sep 1, 2010 at 13:29, Nally Kaunda-Bukenya <nkaunda at yahoo.com> wrote:
> #THE PROGRAM:
> import arcgisscripting
> gp=arcgisscripting.create()
> gp.Workspace = "C:\\NPDES\\NPDES_PYTHON.mdb"
> fc = "Outfalls_ND"
>
> try:
>     # Set the field to create a list of unique values
>         fieldname = "OUTFALL_ID"
>
>     # Open a Search Cursor to identify all unique values
>         cur = gp.UpdateCursor(fc)
>         row = cur.Next()
>
>         # Set a list variable to hold all unique values
>         L = []
>
>         # Using a while loop, cursor through all records and append unique
>         #values to the list variable
>         while row <> None:
>             value = row.GetValue(fieldname)
>             if value not in L:
>                 L.append(value)
>             row = cur.Next()
>             row.SetValue(Tot_Outf_Area, sum(row.AREA_ACRES)) #total area of
> each outfall=sum of all area 4 each unique outfallid
>             cur.UpdateRow(row) #to commit changes
>             row=cur.Next()
>             print row.Tot_Outf_Area
>         # Sort the list variable
>         L.sort()
>
>         # If a value in the list variable is blank, remove it from the list
> variable
>         #to filter out diffuse outfalls
>         if ' ' in L:
>             L.remove(' ')
>
> except:
>     # If an error occurred while running a tool, print the messages
>     print gp.GetMessages()


Have you tried running this code? I suspect it won't work at all --
and because you are catching all possible exceptions in your
try...except, you won't even know why. Here are the things that I'd
suggest, just from glancing over the code:
 - Remove the try...except for now. Getting an exception, and
understanding why it occurred and how best to deal with it, is IMHO
very helpful when prototyping and debugging.
 - Take another look at your while loop. I don't know ArcGIS, so I
don't know if the UpdateCursor object supports the iterator protocol,
but the normal Python way of looping through all rows would be a for
loop:

for row in cur:
    # code

For example, you are calling cur.Next() twice inside the loop -- is
that what you want?

Hope that helps,
Rami


>
>
>
> #Please Help!!!
>
> #Esther
>
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>



-- 
Rami Chowdhury
"Never assume malice when stupidity will suffice." -- Hanlon's Razor
408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD)



More information about the Python-list mailing list