“限定”的錯誤讓我如此苦惱、如此害怕的,就是把寫好的 Python 腳本封裝成 ArcGIS 的工具箱。 每次我把程序代碼寫好,也能正常的運行,然后將其導入自定義工具箱中,點擊運行之前還得沐浴更衣好好的祈禱一番,愿天公助我。 然而事與愿違,剛剛還好好的程序報錯了,錯誤可謂是千奇百怪,大部分時候都在說謎語,明明顯示第100行有什么什么錯,結(jié)果一看,100行是空行... 顯然,ArcGIS 工具箱有一些特別的魔法,擁有一些專屬自己的“限定”錯誤,這種錯誤只有在這里才能品味到。 還不快跟著我嘗一嘗新鮮的魔法shit。
工具箱名字導致的錯誤我們先從最簡單的錯誤開始。 工具箱名稱導致的錯誤: 由于輸出路徑會自動填入工具箱的名字,中間有特殊符號的話,比如:“-”,就會報錯。 縮進錯誤詭異的錯誤來了,報錯顯示如下。我都不知道是說的什么鬼話,怎么還有縮進錯誤? 鎖定到報錯提示的地方,是這樣的: 看上去非常正常,100%正常,開始我不信是這里的問題,我開始折騰,狂寫 print 語句,使勁打斷點,使勁測試,最后機緣巧合之下,我把中文注釋移到了上方,然后就順利運行了。 # ...# 存在該字段 else: # ... 好吧,由于把 else 和中文注釋寫到一行,導致 else 被莫名其妙被跳過了,所以導致錯誤。 兩種“變量”錯誤第一種: global name xx is not defined 第二種: name xx is not defined 比如錯誤處的代碼是這樣的,在變量 pta2 的上面是一行中文注釋: # ...# 二象限 pta2 = (oX - length * 2, pta[1]) # ... 我們使用空行將報錯的變量和中文注釋隔開: # ...# 二象限 pta2 = (oX - length * 2, pta[1]) # ... 于是乎,程序順利運行了,原來如果在變量的上一行是中文注釋,有可能會導致下面那一行被工具箱里面的神奇魔法規(guī)則跳過。 自此,困擾我很久、經(jīng)常讓我折騰到深夜的各種暗坑終于有了解決方法。 最后個人的經(jīng)驗之談,這里記錄下來,希望能有所幫助和啟發(fā)。 |
|