EOL 在计算字段上停止 python



有人能帮我修改这些脚本以忽略错误并继续运行吗? 我只需要弄清楚如何使脚本跳过这些错误并完成其余的行。

以下是完整的 Python 脚本:

# Import system modules
import sys, string, os, arcgisscripting
# Create the geoprocessor object
gp = arcgisscripting.create(9.3)
gp.OverWriteOutput = True
# Set the workspace. List all of the folders within
gp.Workspace = "C:ZP4"
fcs = gp.ListWorkspaces("*","Folder")
for fc in fcs:
print fc
gp.CalculateField_management(fc + "\Parcels.shp", "SIT_FULL_S", "myfunction(!SIT_HSE_NU!,!SIT_FULL_S!)", "PYTHON", "def myfunction(fld1,fld2):n if (fld1=='0'or fld1=='00'or fld1<'00000000000'):n   return ''n else:n   return fld2")

这是我遇到的错误:回溯(最近一次调用):

  File "C:Documents and SettingsAndrewDesktopHOUSENUMERZERO.py", line 18, in
 <module>
ERROR 000539: Error running expression: myfunction
(" ","69 FLOOD ST
") <type 'exceptions.SyntaxError'>: EOL while scanning single-quoted string (<st
ring>, line 1)
Failed to execute (CalculateField).

第一个选项:将gp.CalculateField_management(...)包装在 try/except 中,如下所示:

try:
    gp.CalculateField_management(...)
except SyntaxError:
    pass

这应该允许你的脚本继续运行,但我不确定gp的状态会是什么。

更好的选择是预处理每个文件,并处理其中嵌入换行符的字段;如下所示:

for fc in fcs:
    fix_bad_fields(fp)
    gp.Calculatate...

fix_bad_fields看起来像(你必须研究这个,因为我不熟悉 .shp 文件 - 我会假装它允许写回同一个文件,但如果不是,你也必须做一些复制和重命名):

def fix_bad_fields(filename):
    data_file = open_shp_file(filename)
    for row in data_file:
        row[0] = row[0].replace('n', '')
        row[1] = row[1].replace('n', '')
        row1.put_changes_on_disk() # force changes to disk (may not be necessary)
    data_file.close()

在这些细节上有很多猜测,但希望这能给你一个想法,并足以继续下去。

相关内容

  • 没有找到相关文章

最新更新