我知道之前已经问过类似的问题,但由于我对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()
答案 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()