2013-04-14 30 views
0

我剛剛開始使用Python,並遇到一些問題。我已經爲ArcGIS寫了幾個腳本,並且有一些重複的東西。所以我認爲把它放在我可以再次輕鬆使用的模塊中會很明智。在原始腳本的不同模塊中使用對象

所以現在我有兩個腳本,script.pytoolbox.py。 我的劇本是工作的罰款,所以我複製並粘貼我需要的部分,編輯了一點,一切順利的話,除了用gp.Addmessage

script.py創建將創建消息「Hello#1」消息,但是從消息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

你有兩個問題與您的代碼:

  1. 你永遠不呼叫loadToolBox方法,你只參考。添加()

    toolbox.loadToolbox() 
    
  2. loadToolbox()功能不採取gp作爲參數。如果gp意味着是全局的,那麼toolbox模塊將不可見(全局變量只在當前模塊中可見)。

    添加gp作爲參數,並在調用loadToolbox時將其傳入。在script.py

    toolbox.loadToolbox(gp) 
    

    toolbox.py

    def loadToolbox(gp): 
        # rest of function 
    
+0

謝謝你,它的工作。在那之後得到了一些其他的錯誤,其中一個抱怨在toolbox.py中找不到os,但是在將其作爲參數傳遞給工具箱模塊之後,它就像預期的那樣工作。因此,現在我有 工具箱.loadToolbox(gp,os) def loadToolbox(gp): #函數的其餘部分 – Matthieu

+0

然後,您應該將'import os'添加到您的'toolbox'模塊。 –

相關問題