Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在与原始脚本不同的模块中使用对象_Python_Python 2.7_Arcgis - Fatal编程技术网

Python 在与原始脚本不同的模块中使用对象

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中的消息不会显示。为什么呢?它加载工具箱,因为

我刚开始使用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
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
    模块中。