在不同的模块中使用对象

2024-10-02 18:22:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始用Python,我遇到了一些问题。我已经为ArcGIS编写了一些脚本,并且有一些重复出现的东西。所以我认为把它放在我可以很容易再次使用的模块中是明智的。你知道吗

现在我有两个脚本,script.pytoolbox.py。 我的脚本运行得很好,所以我复制并粘贴了我需要的部分,对它进行了一些编辑,除了用gp.Addmessage创建的消息之外,其他一切都很顺利

你知道吗脚本.py将创建消息“Hello Stackoverflow”,但是工具箱.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")

Tags: 模块pyimport脚本消息helloscripttoolbox
1条回答
网友
1楼 · 发布于 2024-10-02 18:22:32

您的代码有两个问题:

  1. 你从不调用loadToolBox方法,你只引用它。添加()

    toolbox.loadToolbox()
    
  2. 您的loadToolbox()函数没有将gp作为参数。如果gp是一个全局的,那么toolbox模块将看不到它(全局的只在当前模块中可见)。你知道吗

    添加gp作为参数,并在调用loadToolbox时传入它。在script.py中:

    toolbox.loadToolbox(gp)
    

    toolbox.py中:

    def loadToolbox(gp):
        # rest of function
    

相关问题 更多 >