Python 在与原始脚本不同的模块中使用对象
我刚开始使用Python,我遇到了一些问题。我已经为ArcGIS编写了一些脚本,并且有一些重复出现的东西。所以我认为把它放在我可以很容易再次使用的模块中是明智的 现在我有两个脚本,Python 在与原始脚本不同的模块中使用对象,python,python-2.7,arcgis,Python,Python 2.7,Arcgis,我刚开始使用Python,我遇到了一些问题。我已经为ArcGIS编写了一些脚本,并且有一些重复出现的东西。所以我认为把它放在我可以很容易再次使用的模块中是明智的 现在我有两个脚本,script.py和toolbox.py。 我的脚本工作正常,所以我复制并粘贴了我需要的部分,对其进行了一些编辑,除使用gp.Addmessage创建的消息外,一切都进行得很顺利 script.py将创建消息“Hello Stackoverflow”,但toolbox.py中的消息不会显示。为什么呢?它加载工具箱,因为
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
def loadToolbox:
try:
some code
gp.AddToolbox(path)
gp.AddMessage("# Toolbox loaded")
except:
gp.AddMessage("# Toolbox not found")
toolbox.loadToolbox(gp)
def loadToolbox(gp):
# rest of function
toolbox.py
:
import os, sys, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
gp.AddMessage("# Hello Stackoverflow")
import toolbox
toolbox.loadToolbox
def loadToolbox:
try:
some code
gp.AddToolbox(path)
gp.AddMessage("# Toolbox loaded")
except:
gp.AddMessage("# Toolbox not found")
toolbox.loadToolbox(gp)
def loadToolbox(gp):
# rest of function
您的代码有两个问题:
您从不调用loadToolBox
方法,只引用它。添加()
:
loadToolbox()
函数没有将gp
作为参数。如果gp
是一个全局文件,则它对工具箱
模块不可见(全局文件仅在当前模块中可见)
添加gp
作为参数,并在调用loadToolbox
时将其传入。在script.py
中:
import os, sys, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
gp.AddMessage("# Hello Stackoverflow")
import toolbox
toolbox.loadToolbox
def loadToolbox:
try:
some code
gp.AddToolbox(path)
gp.AddMessage("# Toolbox loaded")
except:
gp.AddMessage("# Toolbox not found")
toolbox.loadToolbox(gp)
def loadToolbox(gp):
# rest of function
在toolbox.py
中:
import os, sys, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
gp.AddMessage("# Hello Stackoverflow")
import toolbox
toolbox.loadToolbox
def loadToolbox:
try:
some code
gp.AddToolbox(path)
gp.AddMessage("# Toolbox loaded")
except:
gp.AddMessage("# Toolbox not found")
toolbox.loadToolbox(gp)
def loadToolbox(gp):
# rest of function
谢谢,成功了。之后出现了一些其他错误,其中一个抱怨在toolbox.py中找不到操作系统,但在将其作为参数传递给toolbox模块后,其工作方式与预期一致。现在我有了toolbox.loadToolbox(gp,os)def loadToolbox(gp):#剩下的函数你应该把import os
添加到toolbox
模块中。