调试脚本工具

编码错误不可避免,但可通过两种基本的方法找出错误:

使用 print 语句

通过 print 语句找出缺陷是一种显而易见的常规方法。由于脚本工具可以访问工具进度对话框,因此可以将脚本编辑为包含对 AddMessage()AddWarning()AddError() 的调用,以便将值和检查点信息送入进度对话框。另一种方法是使用返回消息这种独立方法,如 win32ui 模块的 MessageBox 方法。使用此方法时将显示一个弹出对话框。由于必须单击对话框中的确定才能继续执行操作,因此使用该方法可按步骤执行脚本。下方是使用两种方法的示例:

import arcpy
import win32ui
import win32con

n = 5

# Print message to progress dialog
#
arcpy.AddMessage("Value of n = {}".format(n))

# Issue a popup dialog with OK and Cancel button
#
val = win32ui.MessageBox("Value of n = {}".format(n), "title",
                         win32con.MB_OKCANCEL)

# Based on the button clicked, you can branch execution
#
if val == 1:
    arcpy.AddMessage("You clicked OK")
else:
    arcpy.AddError("You clicked Cancel")
    raise arcpy.ExecuteError, "Execution stops due to Cancel button click"

arcpy.AddMessage("This statement reached")

使用调试程序

另一种方法是使用支持调试的 Python 集成开发环境 (IDE)。通过调试程序可在无需修改代码的条件下,设置中断点;进入、跳出以及越过各行代码;检查变量的内容。与插入 print 语句相比,调试程序更高效且通常可快速地隔离缺陷。

普通 IDE 包括以下内容:

使用调试程序的一种方式是在 IDE 中直接打开脚本,修改该脚本以使所有参数均已赋值,然后继续调试。如果情况简单,此方法非常适合。但如果脚本使用的是图层或表视图参数,则必须动态创建这些变量。复杂的参数(如字段映射或空间参考)很难创建为变量。

理想情况下,需要打开脚本工具对话框、输入参数然后为准备好要进行调试的代码启动 IDE。要实现上述目的,需要进行一些简单的更改(如下所示)。

使用 GetParameterAsText()

第一步是将脚本修改为使用 GetParameterAsText() 而非 sys.argv[],如了解脚本工具参数中所述。 此修改可以保留,稍后无需将代码更改回使用 sys.argv[]

执行和调试工具

  1. 地理处理 > 地理处理选项中设置调试程序(如 PythonWin)。
    提示提示:

    如果已安装 PythonWin 并将它用作调试程序,那么调试程序设置中的对应路径取决于安装位置,可能是 C:\Python27\ArcGIS10.2\Lib\site-packages\pythonwin\Pythonwin.exe

  2. 目录 窗口中,右键单击工具,然后单击调试
  3. 在工具箱中打开脚本工具,输入任意要设置的参数,然后单击确定。打开 IDE 可能需要花费一些时间。脚本代码显示后,便可以像通常需要的那样与调试应用程序自由交互。
    注注:

    调试程序设置要求脚本工具始终在前台运行。

您可以设置中断点从而使脚本只运行到该中断点,也可以使用调试程序中的所有其他可用选项。在对话框中输入的参数值可通过 GetParameterAsText() 获取。

运行脚本时,脚本与应用程序之间仍将发生通常会预料到的交互。因此,如果使用 AddMessage()AddWarning()AddError() 等函数,则信息会显示在应用程序中。如果使用进度条功能,则随着脚本的调试,进度条将在工具对话框中更新。完成脚本调试后,便可关闭调试程序以便返回应用程序。如果计划再次调试脚本工具,您也可以使调试程序保持打开状态并单击工具进度对话框中的取消

相关主题

5/10/2014