如何使用SearchCursor工具从表中提取某些值

时间:2014-08-19 07:51:30

标签: python cursor arcpy

我知道之前已经问过类似的问题,但由于我对Python很陌生,所以我无法对我的案例进行其他讨论和建议!

我正在尝试编写一个python脚本来从表中提取某些值:我所指的表是不同水深的硝酸盐值的大集合,它们存放在表的列中。因为我只需要表面的值和最深点,我想搜索行并提取不是0的最后一个值。我已经开始使用SearchCursor工具编写脚本但是卡在了我的位置希望它搜索第一个0值,然后返回并打印列之前的值...有没有人知道如何解决这个问题?

import arcpy

# Set the Workspace
arcpy.env.workspace = "D:\Teresa\Kerstin\SouthernOcean\03_workspace\Teresa"

# Make table
table = "C:/Users/theidema/Desktop/OxzUti_GridP_Annual.csv"

# Create the search cursor
cursor = arcpy.SearchCursor(Table)

# Iterate through the rows
row = cursor.next()
while row:
    print (row.getValue(field))
    row = cursor.next()

1 个答案:

答案 0 :(得分:0)

乍看之下,我看到了三个错误。

首先,SearchCursor()参数“Table”是大写的,而你的变量“table”不是。它区分大小写,因此需要匹配。

其次,您在print语句中使用“field”作为参数,但未定义它。在While循环之上,定义变量 - 类似于:field =“NameOfFieldYouWantToSearch”

最后,同样在您的While循环中,您不希望重新定义变量“row”。只需将其设为cursor.next(),删除“row =”即可。 (在循环之前,row = cursor.next()意味着被评估为True或False,只要有下一行就保持while循环,然后当没有下一行时,它被评估为False并且循环终止。)

噢,是的!我注意到您的工作区不是文件地理数据库。如果我是你,我会在GDB工作。特别是因为GDB之外的特征类不存在。如果你使用Shapefile,它可能会工作。

import arcpy

# Set the Workspace
arcpy.env.workspace = "D:\Teresa\Kerstin\SouthernOcean\03_workspace\Teresa" 
#If "Teresa" is a GDB, append ".gdb"

# Define variables
table = "C:/Users/theidema/Desktop/OxzUti_GridP_Annual.csv"
field = "" #Add the Field Name that you want to Search

# Call your CSV in SearchCursor
cursor = arcpy.SearchCursor(table)

# Iterate through the rows
row = cursor.next()
while row:
    print (row.getValue(field))
    cursor.next()