一、文件操作
1.數(shù)據(jù)持久化
將數(shù)據(jù)通過文件存儲到硬盤里面。
2.操作步驟
打開文件->操作文件內(nèi)容(讀、寫)->關(guān)閉文件。
①.打開文件:
方法一:open(file, mode='r', encoding=None)
'r'/'tr' - 只讀,返回字符串
'rb'/'br' - 只讀,返回二進(jìn)制數(shù)據(jù)
'w'/'tw' - 只寫,清空原數(shù)據(jù),寫入字符串
'bw'/'wb' - 只寫,清空原數(shù)據(jù),寫入二進(jìn)制數(shù)據(jù)
'a'/'ta' - 只寫,原數(shù)據(jù)后寫入字符串
'ab'/'ba' - 只寫,原數(shù)據(jù)后寫入二進(jìn)制數(shù)據(jù)
方法二:
with open(file, mode='r', encoding=None) as 文件對象:
文件作用域(操作文件)
②.讀寫文件:
文件對象.read() - 獲取整個文件內(nèi)容;
文件對象.readline() - 獲取文本文件第一行的內(nèi)容;
文件對象.write() - 將內(nèi)容寫入指定文件中。
③.關(guān)閉文件:
文件對象.close()
④.文件對象.seek() - 移動光標(biāo)到文件開頭。
3.打開不存在的文件:
只讀:報錯
只寫:創(chuàng)建一個空的文件
4.二進(jìn)制文件的讀寫
普通文本文件:可以使用帶t或者帶b的讀寫方式去打開。
二進(jìn)制數(shù)據(jù)文件:視頻文件、音頻文件、圖片都是二進(jìn)制,這些文件只能選擇帶'b'的方式去打開。
4.應(yīng)用:如何做到數(shù)據(jù)持久化
a.將數(shù)據(jù)保存到本地文件
b.需要這個數(shù)據(jù)的時候不是直接賦值而是從本地文件中去取它的值
c.當(dāng)數(shù)據(jù)的值發(fā)生改變后將新的數(shù)據(jù)更新到文件中
eval()用法:將序列字符串轉(zhuǎn)換成字典
二、json數(shù)據(jù)
json模塊是python內(nèi)置的模塊,模塊主要提供和json操作相關(guān)的函數(shù)。
用法:import json
1.json數(shù)據(jù)
json數(shù)據(jù)是一種通用的數(shù)據(jù)格式;一般數(shù)據(jù)接口提供的數(shù)據(jù)都是json格式的數(shù)據(jù)。
2.json數(shù)據(jù)的格式
①.格式:有且只能有一個數(shù)據(jù),這個數(shù)據(jù)必須是json支持的數(shù)據(jù)類型。
②.支持的數(shù)據(jù)類型:
數(shù)字類型(number) - 包括所有的數(shù)字,例如:100, 12.3, -4.3, 3e3(支持科學(xué)計(jì)數(shù)法)。
字符串 - 用雙引號引起來的字符集,例如:"abc", "123", "asd345", "\n", "\u4e00"。
布爾值 - 只有true和false兩個值。
數(shù)組 - 相當(dāng)于python中的列表:[100, "你好"]。
字典 - 相當(dāng)于python中的字典,key必須是字符串:{"a":122, "er":"df"}。
空置 - null;相當(dāng)于python中的None,表示空和沒有。
3.將json數(shù)據(jù)轉(zhuǎn)換成python數(shù)據(jù):
①轉(zhuǎn)換關(guān)系:
| json | python |
|---|---|
| 數(shù)字類型 | int/float |
| 字符串 | str,雙引號可能會變成單引號 |
| 布爾值 | bool, true -> True; false -> False |
| 數(shù)組 | list, |
| 字典 | dict |
| 空值 | null -> None |
②.轉(zhuǎn)換方法:
json模塊中有一個loads可以將json格式的數(shù)據(jù)轉(zhuǎn)換成python對應(yīng)的數(shù)據(jù)。
loads(字符串) - 將json格式的字符串轉(zhuǎn)換成python數(shù)據(jù)
注意:這兒的字符串的內(nèi)容必須是json數(shù)據(jù)
4.將python數(shù)據(jù)轉(zhuǎn)換成json數(shù)據(jù)
①.轉(zhuǎn)換關(guān)系:
| python | json |
|---|---|
| int\float | 數(shù)字 |
| str | 字符串,引號都會變成雙引號 |
| bool | 布爾,True -> true, False -> false |
| list\tuple | 數(shù)組 |
| dict | 字典 |
| None | null |
②.轉(zhuǎn)換方法:
dumps(數(shù)據(jù)) - 將括號中的python數(shù)據(jù)轉(zhuǎn)換成json格式的字符串