總結(jié)Day13_json、異常處理

====上節(jié)回顧===

1.打開文件 -> 操作文件 -> 關(guān)閉文件

??文件對象 = open(文件路徑,打開方式,encoding='utf-8')
????./
????../
????.../

??打開方式(r,w,rb,wb,a)
????r,w,a -> 打開文本
????rb,wb -> 打開二進制

??with open(文件路徑,打開方式,encoding='utf-8') as 文件對象:
????操作文件對象

2. 文件對象.read() / 文件對象.readline()

??文件對象.write()

3.數(shù)據(jù)持久化的方法

??需要使用數(shù)據(jù)的時候先從文件中讀出來
??數(shù)據(jù)修改后將最新的數(shù)據(jù)保存到文件中

===JSON===

"""

1.什么是JSON數(shù)據(jù)

??json是一種具有特定語法的數(shù)據(jù)格式

2.json數(shù)據(jù)的語法

??一個json數(shù)據(jù)只能由一個數(shù)據(jù),這個數(shù)據(jù)的數(shù)據(jù)類型必須是json支持的數(shù)據(jù)類型

3.json支持的數(shù)據(jù)類型

??a.數(shù)字類型: 包含所有的數(shù)字瘦陈,包括整數(shù)线召、小數(shù);例如: 100,12,5, -3.14
??注意: 1) 整數(shù)前面不能加'+'
????2) 支持科學計數(shù)法
??b.字符竄: 使用雙引號引起來的數(shù)據(jù)赤炒;例如: "sdsfds1234"
??c.布爾: 只有True和False兩個值
??d.數(shù)組: 相當于python的列表,用[]括起來亏较,多個元素用逗號隔開;例如: [100,"asdf", True]
??e.字典: 相當于python的字典可霎,用{}括起來,多個鍵值用逗號隔開;例如: {'a': 1, 'b': 2}
??f.空值: null,相當于python里的None

4.python處理json數(shù)據(jù)

??python提供了json模塊宴杀,專門用來處理json數(shù)據(jù)
??1) 將json數(shù)據(jù)轉(zhuǎn)換成python數(shù)據(jù)(通過爬蟲獲取到別人提供放的json數(shù)據(jù)癣朗,在python中處理)
????json?-->?python
????數(shù)字???int/float
????字符串??str,可能雙引號變單引號
????布爾???bool旺罢,會將json中的true/false首字母大寫
????數(shù)組???list
????字典???dict
????空值(null)?None
??b.loads方法
??loads(字符串, encoding='utf-8') - 將字符串中的json數(shù)據(jù)轉(zhuǎn)換成python數(shù)據(jù)
??注意?跤唷!!: 這兒的字符串內(nèi)容必須是json數(shù)據(jù)
??2) 將python數(shù)據(jù)轉(zhuǎn)換成json數(shù)據(jù)(python寫后臺接口將數(shù)據(jù)提供給客戶端)
??a.轉(zhuǎn)換方式
????python?--->?json
????int/float??? 數(shù)字
????str????? 字符串
????bool ???? True -> true, False -> false
????list????? 數(shù)組
????dict? ? ?? 字典
????None????null
??b.dumps(對象) - 將指定的對象轉(zhuǎn)換成json數(shù)據(jù)扁达,以字符串的形式返回
??這兒的對象指的是python數(shù)據(jù)
??注意: 返回值是字符串, 并且字符串的內(nèi)容是json數(shù)據(jù)

5.json文件處理

??嚴格來說正卧,json文件是文件內(nèi)容是json數(shù)據(jù)的文件
??load(文件對象) - 將指定文件中的內(nèi)容讀出來,并且轉(zhuǎn)換成python對應的數(shù)據(jù)跪解。
??注意: 這兒的文件對象對應的文件必須是json文件
??dump(對象炉旷,文件對象) - 將指定對象轉(zhuǎn)換成內(nèi)容是json格式的字符串,然后寫入指定的文件中
??注意: 這兒的對象對應的類型必須是能夠轉(zhuǎn)換成json的數(shù)據(jù)類型

===數(shù)據(jù)請求===

??python中的數(shù)據(jù)請求(http請求)叉讥,是第三方庫request來提供的

1.requests第三方庫的使用

??get/post方法都是發(fā)送請求獲取接口提供的數(shù)據(jù)
??a. get(url, params=None)
????url - 字符串窘行,需要獲取的數(shù)據(jù)的地址
????params - 字典,參數(shù)列表(發(fā)送請求的時候需要傳給服務器的數(shù)據(jù))
????params完整的接口: 協(xié)議://主機地址/路徑?參數(shù)列表(參數(shù)名1=值1&參數(shù)2=值2)
??b.post(url, data=None, json=None)(暫時不管)

# 1.發(fā)送請求图仓,并且獲取返回數(shù)據(jù)
    # 服務器返回的數(shù)據(jù)叫響應
    res = requests.get('https://www.apiopen.top/meituApi?page=10')
    # res = requests.get('https://www.apiopen.top/meituApi',{'page': 10})
    print(res, 123)

    # 從響應中獲取數(shù)據(jù)
    # a.獲取json數(shù)據(jù) -
    content_json = res.json()  # 會自動將json數(shù)據(jù)轉(zhuǎn)換成python數(shù)據(jù)
    print(content_json['data'])

    # b.獲取字符串數(shù)據(jù)
    content_text = res.text
    print(content_text)

    # c.獲取二進制數(shù)據(jù)(原始數(shù)據(jù))
    content_bytes = res.content
    print(content_bytes)

===異常處理===

1.異常捕獲 - 讓本該報錯的代碼不報錯

??你知道某段代碼會出現(xiàn)異常罐盔,而且沒有辦法避免,同時又希望出現(xiàn)異常的時候程序不奔潰救崔;
??這個時候就可以通過異常捕獲惶看,來讓程序不奔潰并且自行處理異常

2.異常捕獲語法

??a. try-except (可以捕獲所有類型的異常 - 只要代碼段1中出現(xiàn)了異常就捕獲)
??try:
????代碼段1(可能會出現(xiàn)異常的代碼段)
??except:
????代碼段2(出現(xiàn)異常后處理異常的代碼段)
??其他語句

??執(zhí)行過程: 執(zhí)行代碼段1,如果代碼段1中出現(xiàn)異常六孵,程序不奔潰纬黎,直接執(zhí)行代碼段2。
??如果代碼段1中沒有出現(xiàn)異常劫窒,不執(zhí)行代碼段2而是直接執(zhí)行后面的其他語句

def method1():
    print('==============1.try-except===========')
    # try:
    #     number = int(input('請輸入一個數(shù)字:'))
    #     print(number)
    # except:
    #     print('出現(xiàn)異常,輸入有誤本今!')

    try:
        print('abc'[4])   # IndexError
        print('=======')
        print({'a': 10}['b'])  # KeyError
    except:
        print('出現(xiàn)異常!')

??b. try - except 錯誤類型 (捕獲指定類型的異常 - 只有代碼段1中出現(xiàn)了指定類型的異常才捕獲)
??try:
????代碼段1(可能會出現(xiàn)異常的代碼段)
??except 錯誤類型:
????代碼段2(出現(xiàn)異常后處理異常的代碼段)

def method2():
    print('==============2.try-except 錯誤類型===========')
    try:
        print({'a': 100}['b'])  # KeyError
        print(a)
        print([1, 2, 3][4])  # IndexError
    except (KeyError, IndexError):
        print('出現(xiàn)異常')

??c.try - except (錯誤類型1,錯誤類型2...) (同時捕獲多種指定異常)
??try:
????代碼段1(可能會出現(xiàn)異常的代碼段)
??except (錯誤類型1,錯誤類型2...):
????代碼段2(出現(xiàn)異常后處理異常的代碼段)

def method3():
    print('==============3.try-except 錯誤類型1-except 錯誤類型2...===========')
    try:
        with open('abc.txt', 'r') as f:
            print(f.read())
        print({'a': 100}['b'])  # KeyError
    except KeyError:
        print('key不存在')
    except FileNotFoundError:
        print('文件不存在!')

    print('~~~~~~~~~')

??d.try-except 錯誤類型1 - except 錯誤類型2... (同時捕獲多種異常,可以對不同的異常做不同的處理)
??try:
????代碼段1(可能會出現(xiàn)異常的代碼段)
??except 錯誤類型1:
????代碼段2
??except 錯誤類型2:
????代碼段3
????...

3.拋出異常 - 主動讓程序奔潰

??raise 錯誤類型 - 程序執(zhí)行到這句代碼就出現(xiàn)指定類型的異常!
??說明:錯誤類型 - 可以是系統(tǒng)提供的錯誤類型, 也可以是自定義錯誤類型(要求這個值必須是一個類诈泼,而且是Exception的子類)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市煤禽,隨后出現(xiàn)的幾起案子铐达,更是在濱河造成了極大的恐慌,老刑警劉巖檬果,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓮孙,死亡現(xiàn)場離奇詭異,居然都是意外死亡选脊,警方通過查閱死者的電腦和手機杭抠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恳啥,“玉大人偏灿,你說我怎么就攤上這事《鄣模” “怎么了翁垂?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長硝桩。 經(jīng)常有香客問我沿猜,道長,這世上最難降的妖魔是什么碗脊? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任啼肩,我火速辦了婚禮,結(jié)果婚禮上衙伶,老公的妹妹穿的比我還像新娘祈坠。我一直安慰自己,他們只是感情好矢劲,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布颁虐。 她就那樣靜靜地躺著,像睡著了一般卧须。 火紅的嫁衣襯著肌膚如雪另绩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天花嘶,我揣著相機與錄音笋籽,去河邊找鬼。 笑死椭员,一個胖子當著我的面吹牛车海,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼侍芝,長吁一口氣:“原來是場噩夢啊……” “哼研铆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起州叠,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤棵红,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咧栗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逆甜,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年致板,在試婚紗的時候發(fā)現(xiàn)自己被綠了交煞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡斟或,死狀恐怖素征,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情萝挤,我是刑警寧澤稚茅,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站平斩,受9級特大地震影響亚享,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绘面,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一欺税、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧揭璃,春花似錦晚凿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至情组,卻和暖如春燥筷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背院崇。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工肆氓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人底瓣。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓谢揪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拨扶,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容