一丙笋、文件操作
打開文件 -- 操作 -- 關閉文件
1.基本過程
2.open(路徑,打開方式,encoding=編碼方式)
a.路徑:絕對路徑(了解)摇天,相對路徑:./相對路徑图贸,../都毒,.../
b.打開方式:r评凝,br/rb -- 讀坯钦,w蟀苛,rw/wr -- 寫
注意:路徑不存在的時候益咬,讀的方式打開會報錯,寫的方式打開會打開新建文件
c.設置編碼:utf-8帜平,gbk
注意:如果是以二進制的形式打開文件(br/rb幽告,rw/wr),不能設置編碼方式
3.文件的讀和寫
read()/readline() -- 讀
write() -- 寫
4.關閉文件
f.close() --- 關閉文件
5.打開文件和關閉文件的的簡寫方式(常用的)
# 讀二進制文件(上傳文件)
with open('./files/timg.jpg','rb') as f:
# bytes是python中內(nèi)置的數(shù)據(jù)類型裆甩,用來表示二進制
content = f.read()
print(type(content))
print(content)
f.close()
# 將二進制數(shù)據(jù)寫入文件(下載圖片)
with open('./files/new.jpg','wb') as f:
f.write(content)
f.close()
二饱普、json文件
json是沒有特定格式的一種文本形式,它有自己的語法
json文件就是后綴是.json的文本文件
1.json格式對應的數(shù)據(jù)類型及其表現(xiàn)
a.每個json文件中只能存一個數(shù)據(jù)拧烦,這個數(shù)據(jù)的類型必須是以下類型中的一個
類型: 格式: 意義
對象(object): {"a":10,"b":[1,2]} 相當于字典
數(shù)組(array): [100,"abc",true,[1,2]] 相當于列表治唤,里面的元素可以是任何類型
數(shù)字(number): 0,100,3.14,-200 包含整數(shù)和小數(shù)
字符串(string): "abc","hello jason" 相當于字符串
布爾 true/false 是(真)/否(假)
null: null 空值
2.python對json數(shù)據(jù)的支持
json ---> python
對象 字典(dict)
數(shù)組 列表(list)
數(shù)字 整數(shù)(int)和浮點數(shù)(float)
布爾/true,false 布爾(bool)/True,False
null None
json模塊是python中內(nèi)置的,專門用來處理json數(shù)據(jù)的一個模塊
- load(json文件對象):以json的格式茉帅,獲取文件中的內(nèi)容叨叙。將內(nèi)容轉換成對應的python數(shù)據(jù)
- loads(json格式內(nèi)容的字符串,編碼方式):將json格式的字符串轉換成python對應的數(shù)據(jù)
- dump(需要寫入json文件中的python數(shù)據(jù)堪澎,json文件對象)
- dumps(需要轉換成json格式字符串的python)
with open('./files/json1.json', 'r', encoding='utf-8') as f:
content = json.load(f)
print(content)
print(type(content))
print(content[3])
content1 = json.loads('{"a":100, "abc":true}', encoding='utf-8')
print(content1,type(content1))
3.python轉json數(shù)據(jù)
with open('./files/new.json', 'w', encoding='utf-8') as f:
json.dump({'a':100, 'hn':200},f)
# json.dump((1,'a',True,3.14), f)
# 注意:集合不能轉換成python數(shù)據(jù)
#json.dump({1,2,'a',True}, f)
# 將python數(shù)據(jù)擂错,轉換成json字符串
json_str = json.dumps([1,2,3,True,'abc'])
print(json_str,type(json_str))
三、異常捕獲
a.形式1:捕獲try后代碼塊里面的所有異常
try:
需要捕獲異常的代碼塊(可能會出現(xiàn)異常的代碼塊)
except:
出現(xiàn)異常后執(zhí)行的代碼
執(zhí)行過程:執(zhí)行try后面的代碼塊樱蛤,一旦遇到異常钮呀,就馬上執(zhí)行except后面的代碼塊。執(zhí)行完后再執(zhí)行其他的語句如果try里面的代碼塊沒有出現(xiàn)異常昨凡,就不執(zhí)行except后面的代碼塊爽醋。再執(zhí)行其他的語句
b.形式2:
try:
需要捕獲異常的代碼塊(可能會出現(xiàn)異常的代碼塊)
except (錯誤類型1,錯誤類型2):
出現(xiàn)異常后執(zhí)行的代碼
c.形式3:
try:
需要捕獲異常的代碼塊(可能會出現(xiàn)異常的代碼塊)
except (錯誤類型1):
出現(xiàn)異常后執(zhí)行的代碼
except (錯誤類型2):
出現(xiàn)異常后執(zhí)行的代碼
d.形式4:
try:
pass
except:
出現(xiàn)異常后執(zhí)行代碼
finally:
不管有沒有異常都會執(zhí)行(就算崩潰了也會執(zhí)行)
(在這兒做程序異常退出時的善后,一般做保存數(shù)據(jù)和進度的工作)