gpt4 book ai didi

python - EOL 在计算字段上停止 python

转载 作者:太空宇宙 更新时间:2023-11-03 19:30:51 25 4
gpt4 key购买 nike

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

这是完整的 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 Settings\Andrew\Desktop\HOUSENUMERZERO.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()

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

关于python - EOL 在计算字段上停止 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5953284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com