我刚开始使用Python而且我遇到了一些问题。我已经为ArcGIS编写了一些脚本并且有一些重复的东西。所以我认为将它放在我可以轻松再次使用的模块中是明智的。
现在我有两个脚本,script.py
和toolbox.py
。
我的脚本工作正常,所以我复制并粘贴了我需要的部分,编辑了一下,除了使用gp.Addmessage
script.py将创建消息“Hello Stackoverflow”,但来自toolbox.py的消息不会显示。这是为什么?它加载了工具箱,因为我以后可以使用它,所以它会重新定位gp对象。
我有点被困在这里,希望能够从模块内部打印消息,以告知用户该工具发生了什么。
script.py
:
import os, sys, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
gp.AddMessage("# Hello Stackoverflow")
import toolbox
toolbox.loadToolbox
toolbox.py
:
def loadToolbox:
try:
some code
gp.AddToolbox(path)
gp.AddMessage("# Toolbox loaded")
except:
gp.AddMessage("# Toolbox not found")
答案 0 :(得分:0)
您的代码有两个问题:
您永远调用 loadToolBox
方法,只有引用。添加()
:
toolbox.loadToolbox()
您的loadToolbox()
函数不会将gp
作为参数。如果gp
意味着是全局的,那么toolbox
模块将无法看到它(全局变量仅在当前模块中可见)。
添加gp
作为参数,并在调用loadToolbox
时将其传入。在script.py
:
toolbox.loadToolbox(gp)
和toolbox.py
:
def loadToolbox(gp):
# rest of function