2018-09-03 day12文件操作與異常捕獲

1.復(fù)習(xí)

1.1:容器類型:字典武鲁、列表橘沥、元祖和集合

1.1.1列表(list)

  • a.有序:(可以通過下標(biāo)取獲取元素)魁袜、可變(增刪改)养渴、列表中的元素可以是
    可以是任何數(shù)據(jù)類型的數(shù)據(jù)
  • b.列表的相關(guān)操作:增刪改查
  • C.列表的相干運(yùn)算:+ , * 难咕,in和not in ,len()
  • d相關(guān)方法

1.1.2字典(dict):

可變的(增刪改)课梳、key:唯一的,不可變的值value:無要求余佃,任何數(shù)據(jù)類型都可以

  • a.相關(guān)操作:增刪改查
  • b.相關(guān)運(yùn)算:in 和 not in 暮刃, len()
  • c. 字典d的相關(guān)運(yùn)算

1.1.3元祖(tuple):

有序,不可變爆土,元素可以是任何類型

  • a.查和列表一樣

  • b.只有一個元素的元祖:(12,)

  • c.獲取元祖的元素:x椭懊,y=(100,200)==>x,y=100,200

  • d.函數(shù) a雾消,b=b,a

1.1.3.集合(set)

  • 無序的灾搏,可變的,元素是不可變的立润,
  • 支持?jǐn)?shù)學(xué)的集合運(yùn)算(包含狂窑,交集,并集桑腮,查集泉哈,補(bǔ)集)文檔

1.2函數(shù)

  • 1函數(shù)的聲明(格式和步驟)--函數(shù)聲明的時候不會執(zhí)行函數(shù)體
def 函數(shù)名(參數(shù)列表):
    函數(shù)的說明
    函數(shù)體
  • 2函數(shù)的調(diào)用(格式和調(diào)用過程)

  • 函數(shù)名()

  • 變量()

  • 列表下標(biāo)

  • 字典[key]

  • 3參數(shù)相關(guān):位置參數(shù)、關(guān)鍵字參數(shù)破讨、參數(shù)的默認(rèn)值丛晦、不定長參數(shù)

  • 4返回值:a.執(zhí)行到return,結(jié)算函數(shù)提陶,返回return后面的
    返回值

  • 5匿名函數(shù):格式

  • 6遞歸函數(shù)

  • 7函數(shù)作為變量使用:申明函數(shù)的時候?qū)嶋H是在分明一個類型是function的變量


2. 文件操作

2.1 基本過程

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

  • 2.open(路徑烫沙,打開方式,encoding=編碼方式)

    a.絕對路徑(了解隙笆,從來不使用)

    b.相對路徑

    c. 打開方式:r,br--讀 w,wb,a---讀

?? ? ? 在打開文件時锌蓄,如果指定的路徑不存在時,以的方式打開會報錯撑柔,以寫的方式打開表示新建一個文件

d.**設(shè)置編碼:utf-8,gbk**

注意:如果是以二進(jìn)制的方式(rb瘸爽、wb)單開文件是,就不能設(shè)置
編碼方式

2.2文件的讀和寫

  • read()/readline()--讀(位置會記憶) 打開的是一個文件對象

  • write() ---寫(會覆蓋原來的內(nèi)容铅忿,也可以接著下剪决,a)
    4.關(guān)閉文件
    如果不關(guān)閉,有可能會出現(xiàn)會有問題

2.3打開文件和關(guān)閉文件的簡寫

  • with open(路徑檀训,打開方式柑潦,encoding=編碼方式)

    以這種方式打開,文件操作完成后肢扯,會自動關(guān)閉

with open('./wl.png','rb') as ff:
    content=ff.read()
    #bytes是python中內(nèi)置的數(shù)據(jù)類型妒茬,用來表示二進(jìn)制數(shù)據(jù)
    print(content,type(content))
    #將數(shù)據(jù)寫入文件(下載圖片)

with open('./venv/w2.png','wb') as f:
    #wb(將二進(jìn)制寫入文件)下載圖片
    f.write(content)

3.json文件

  • json是有特定格式的格式的一種文本形式,它有自己的語法

  • json文件就是后綴名為 .json的文本文件

3.1 json格式對應(yīng)的數(shù)據(jù)類型及其表現(xiàn)

素數(shù) 格式 意義
對象(object) {鍵值對} 相當(dāng)于字典
數(shù)組(array) [元素] 元素是任何數(shù)據(jù)類型 相當(dāng)于列表
數(shù)字(number) 100 蔚晨、0乍钻、0.2 包含整數(shù)和小數(shù)
字符串(string) "abc"(只能雙引號) 就是字符串
布爾 trun、false(只能小寫 是/否
null null 空值
  • 注意:
  • 一個json文件中只能存一個數(shù)據(jù)铭腕,這個數(shù)據(jù)類型必須是以下7種數(shù)據(jù)類型中的一個
  • import json:json模塊是python中內(nèi)置的银择,專門處理json文件的一個模塊

3.2 json轉(zhuǎn)python

json Python
對象 字典
數(shù)組 列表
數(shù)字 整數(shù)和浮點(diǎn)數(shù)
布爾(tru/false) boll(True/false)
null None

1.json.load(json文件對象):以json的格式,獲取文件的內(nèi)容,然后轉(zhuǎn)換成相應(yīng)的python數(shù)據(jù)

with open('./json2.json','r',encoding='utf-8') as f:    #以讀的方式打開一個json文件
    content=json.load(f)   #讀取json文件中的內(nèi)容累舷,轉(zhuǎn)化成python格式并賦值給變量content
    print(content)

2.json.loads(json格式內(nèi)容的字符串浩考,編碼方式):將json格式的字符串轉(zhuǎn)換成python對應(yīng)的數(shù)據(jù)

content1=json.loads('"qwerty"',encoding='utf-8')    #將json格式的字符串"qwerty"轉(zhuǎn)換正python格式并賦值給content1
print(content1,type(content1))
  • 注意:
    json格式的字符串必須是雙引號 " "
    json格式的true/false,必須是小寫

3.3 python轉(zhuǎn)json

python json
字典 對象
列表被盈、元祖 數(shù)組
整數(shù)析孽、浮點(diǎn)數(shù) 數(shù)字
布爾(True?False) true/false
字符串 字符串(雙引號)
None null
  • 1.dump(需要寫入json中的python數(shù)據(jù)搭伤,json文件對象) ---寫操作
with open('./new.json','w',encoding='utf-8') as f:
    json.dump((1,2,3,4,123,1233),f)
  • 2.dumps(需要轉(zhuǎn)換成json格式字符串的python數(shù)據(jù))---單純轉(zhuǎn)換,將python數(shù)據(jù)轉(zhuǎn)換成json格式
content2=json.dumps('123,12,87,887')
print(content2,type(content2))

注意:
python中的集合數(shù)據(jù)不能轉(zhuǎn)換成json數(shù)據(jù)

4.異常捕獲

4.1什么情況用異常捕獲...

a.輸入兩個數(shù)袜瞬,求這兩個數(shù)的商是多少

num1=float(input('除數(shù)'))
num2=float(input('被除數(shù)'))
print(num1/num2)

用戶輸入除數(shù)是 用戶輸了個 20a,就會報錯怜俐,這個時候我們不希望程序崩潰,而是輸出提示

b.打開一個不存在的文件邓尤,不希望程序崩潰拍鲤,只是讀出的內(nèi)容為空

with open('./text11111.json','r')as f:
    content=json.load()

總結(jié):

  • 程序出現(xiàn)某種異常,但是不想因?yàn)檫@個異常 而讓這個程序崩潰汞扎,帶來不好的用戶體驗(yàn)季稳,這個時候就可以使用異常捕獲機(jī)制。

2.怎么捕獲異常

  • 形式1:捕獲try后面代碼塊里面的所有異常(用的并不多)
try:
    需要捕獲的異常代碼塊(可能會出現(xiàn)異常的代碼塊)
except:
    出現(xiàn)異常后的執(zhí)行代碼

???????執(zhí)行過程澈魄,一次執(zhí)行try后面的代碼塊景鼠,一旦遇到異常就馬上執(zhí)行except后,后面的代碼塊一忱,執(zhí)行完之后再執(zhí)行其他的語句莲蜘;如果try里面的代碼塊沒有出現(xiàn)異常就不執(zhí)行except后面的代碼塊,而是直接執(zhí)行其他語句

  • 形式2:
try:
    需要捕獲的異常代碼塊(可能會出現(xiàn)異常的代碼塊)
except:(錯誤類型2帘营,錯誤類型2)    #只要這兩種錯誤類型哪一個出現(xiàn)都會執(zhí)行except后面的代碼
    出現(xiàn)異常后的執(zhí)行代碼
  • 形式3:
try:
    需要捕獲異常的代碼塊(可能會出現(xiàn)異常)
except 錯誤類型1:
    執(zhí)行語句塊1
except 錯誤類型2:
    執(zhí)行語句塊2
except 錯誤類型3:
    執(zhí)行語句塊3
  • 形式4
try:
    需要捕獲異常的代碼塊(可能會出現(xiàn)異常)
except 錯誤類型1:
    執(zhí)行語句塊1
finally:
    不管有沒有異常票渠,就算前面已經(jīng)崩潰了也會執(zhí)行
    (在這做程序異常退出時的善后,一般做保存數(shù)據(jù)和進(jìn)度的工作)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芬迄,一起剝皮案震驚了整個濱河市问顷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌禀梳,老刑警劉巖杜窄,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異算途,居然都是意外死亡塞耕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門嘴瓤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扫外,“玉大人,你說我怎么就攤上這事廓脆∩秆瑁” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵停忿,是天一觀的道長驾讲。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么吮铭? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任时迫,我火速辦了婚禮,結(jié)果婚禮上谓晌,老公的妹妹穿的比我還像新娘别垮。我一直安慰自己,他們只是感情好扎谎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著烧董,像睡著了一般毁靶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逊移,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天预吆,我揣著相機(jī)與錄音,去河邊找鬼胳泉。 笑死拐叉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扇商。 我是一名探鬼主播凤瘦,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼案铺!你這毒婦竟也來了蔬芥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤控汉,失蹤者是張志新(化名)和其女友劉穎笔诵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姑子,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乎婿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了街佑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谢翎。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖舆乔,靈堂內(nèi)的尸體忽然破棺而出岳服,到底是詐尸還是另有隱情,我是刑警寧澤希俩,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布吊宋,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏璃搜。R本人自食惡果不足惜拖吼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望这吻。 院中可真熱鬧吊档,春花似錦、人聲如沸唾糯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽移怯。三九已至香璃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舟误,已是汗流浹背葡秒。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嵌溢,地道東北人眯牧。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像赖草,于是被迫代替她去往敵國和親学少。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354