Python arcpy UpdateCursor 语法错误

Python syntax error with arcpy UpdateCursor

我是 python 的新手,想要一个脚本来查看功能 class 并比较两个文本字段中的值,然后用 YN 取决于值是否相同。我想我需要使用带有 if 语句的 UpdateCursor。我尝试了以下方法,但是当我尝试 运行 时出现语法错误。我正在使用 ArcGIS 10.1 并且知道 daCursor 更好,但我只是想把我的头围在游标上,我想我现在会尽量保持简单。

#import system modules
import  arcpy
from arcpy import env
import os
import sys


#set environment settings
working_fc = sys.argv[1]
working_gdb = os.path.split(working_fc)[0]


#use an update cursor to populate the field BEC_UPDATED based on the     result of a query 
#query = ("SELECT  * FROM working_fc" "WHERE [BEC_LABEL] = [BEC_V9]")
#if the query is true, then BEC_UPDATED should be popluated with "N"
#if the query is false, then BEC_UPDATED should be populated with "Y"

rows = arcpy.UpdateCursor (working_fc)
for row in rows:
    if row.getValue("BEC_LABEL") == row.getValue("BEC_V9")
    row.BEC_UPDATED = "N"
    else
    row.BEC_UPDATED = "Y"
    rows.updateRow(row)

 print "BEC_UPDATED field populated"

您忘记了 'if' 块中的冒号和缩进:

rows = arcpy.UpdateCursor (working_fc)
for row in rows:
    if row.getValue("BEC_LABEL") == row.getValue("BEC_V9"):
        row.BEC_UPDATED = "N"
    else:
        row.BEC_UPDATED = "Y"
    rows.updateRow(row)

 print "BEC_UPDATED field populated"

您的语法错误是由缩进和漏掉的冒号引起的。 Python 对此很挑剔,所以当你遇到语法错误时一定要检查一下。

rows = arcpy.UpdateCursor(working_fc)
for row in rows:
    if row.getValue("BEC_LABEL") == row.getValue("BEC_V9"):
        row.BEC_UPDATED = "N"
    else:
        row.BEC_UPDATED = "Y"
    rows.updateRow(row)

将此更改为 da.UpdateCursor 语法本质上是相同的,但需要您预先指定您感兴趣的属性。值得练习,因为一旦你接触到更复杂的脚本,它就会变得更容易:)

fieldList = ["BEC_LABEL", "BEC_V9", "BEC_UPDATED"]
with arcpy.da.UpdateCursor(working_fc, fieldList) as cursor:
    for row in cursor:
        if row[0] == row[1]:
            row[2] = "N"
        else:
            row[2] = "Y"
        cursor.updateRow(row)