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