python3.7怎么使用arcpy_从Python到空间分析Arcpy|1.3.7 神啊!救救我之如何处理报错...
今天講的是關鍵時候不卡殼的技能,尤其是循環語句中和數據清洗中,先假設一種情況,領導安排你把,某機構給你們的坐標x和y數據列表中的每個元素的x偏移3個單位,假設你現在已經可以掌握相關的內容了,心里想太easy了,上來就說一頓操作,愉快的敲了如下的代碼:
xy_file_list = open('./坐標.csv') new_xy = [(item[0]+3,item[1]) for item in xy_file_list]print("finish!!!")
當你點擊了run,愉快的等待屏幕顯示 "finish!!!"的時候,沒想到屏幕卻是一堆xxError,納尼不應該啊,程序沒問題啊,于是你趕緊檢查一下坐標.csv里面的內容,你理想的是數據應該是[(1,2),(2,2),(1,4),(1,22),(1,6),(31,2),(4,2)],沒想到分析數據后,傻眼了,給的數據是[(1,2),(2,2),(),(1,22),(1,6),(4,2)],上面的程序跑這樣的數據,不報錯就見鬼了,于是你又開始 加了一堆 判斷條件。
xy_file_list = open('./坐標.csv')new_xy = []for item in xy_file_list:if len(item)>0: new_xy.append((item[0]+3,item[1]))
ok,程序暫時沒問題了,很不幸領導又拿來了一個坐標數據,這次你學乖了,開始先檢查數據了,一看數據是這樣的[(1,2),(2,2),(),('1','22'),(1,6),(4,2)],估計心里又開始想怎么寫判斷條件了。
難道就拿那些xxError,沒有辦法了嗎,只能寫一個個if來規避這些,非也非也,辦法肯定是有的,只要簡單的修改最初的代碼如下:
xy_file_list = open('./坐標.csv')new_xy = []for item in xy_file_list:try: new_xy.append((item[0]+3,item[1])) except Exception:continue
保證不會報錯了,這個就是非常簡單粗暴的處理方式了,是告訴程序遇到任何Error,都continue。
我們就上面那段代碼,介紹一下python中如何來處理這些異常 error。首先要需要兩個關鍵字 try 和 except兩個字母跟的內容如下:
大部分人比較困惑的應該是如何 寫 to do error 的代碼吧,通常而已有下面幾種:
直接忽視 使用 pass 或者 continue 關鍵字,不去處理,畢竟不處理也是一種處理;
打印出來發生了什么error, print(e),看看有哪些錯誤, 需要 上面配合使用 as e;
打印出哪些內容報錯,例如上面案例中的print('錯誤的數據有:',item)
Python的錯誤
講了如何處理python中的異常,那么下面說說python中通常會有哪些異常,python中內置的異常如下表,簡直太多了,比較幸運的python中的異常是基于類來構建的,所以只要知道基類就可以了,最常用就,你只要知道Exception ,這個就行了,基本上可以幫你應對絕大多數的error了,其他常用的還有AttributeError,KeyError等,也行你想問為什么不用一個Exception ,還有區分那么多,這個是根據要處理的數據來定的,比較只有序列類型的數據才有IndexError這個異常,一堆int 和float數據怎么樣也不會出現IndexError的,無論如何,如果理解不了,就都用Exception 。
OK,本小節講解先到這里,本期的作業,把剛剛提到的例子用自己的代碼實踐一遍,不用寫open,直接讓xy_file_list 等于講到的數據。還是那句話,歡迎截圖,截圖越多的同學,今后的作業被選中,點評的概率越大。
本系列由解憂數據出品
專注城市和地理數據
三w點jieyoudata點com(www.jieyoudata.com)
找數據,來解憂——它難道不香嗎
-一點分享 更多選擇-
歡迎加入解憂數據
Jieyou data
http://www.jieyoudata.com
微信號 : 解憂數據
歡迎您的
總結
以上是生活随笔為你收集整理的python3.7怎么使用arcpy_从Python到空间分析Arcpy|1.3.7 神啊!救救我之如何处理报错...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在思科无线控制器上查看5GHz和2.4G
- 下一篇: 邮件群发软件哪个好用?