day17總結(jié)-文件操作

文件操作

1.數(shù)據(jù)本地化和數(shù)據(jù)持久化

通過文件將數(shù)據(jù)存到硬盤中

2.文件內(nèi)容操作

基本步驟:打開文件 --> 操作文件(讀/寫)--> 關(guān)閉文件

2.1打開文件

open(file,mode,encoding=None) --以指定方式打開指定文件辞嗡,并返回被打開的 文件對象

file --需要打開的文件路徑,傳參時實參為字符串格式,需要用引號括起來

? ./ --當前文件所在目錄(可以省略)

? ../ --當前文件所在目錄的上層目錄

mode --表示打開方式,傳參時實參為字符串格式,需要用引號括起來

? r --默認值侵蒙,以讀的方式打開文件(只能進行讀操作)

? w --以寫的方式打開文件(只能進行寫操作),會覆蓋原文件內(nèi)容

? a --以寫的方式打開文件(只能進行寫操作)傅蹂,在原文件內(nèi)容后追加

? rb/br --以讀的方式打開文件(只能進行讀操作)纷闺,讀出來的內(nèi)容是二進制數(shù)據(jù)

? wb/bw --以寫的方式打開文件(只能進行寫操作),將二進制數(shù)據(jù)寫入文件中

? + --以讀寫的方式打開

encoding --文本編碼方式份蝴,傳參時實參為字符串格式犁功,需要用引號括起來

? utf-8,文本編碼只針對文本文件婚夫,二進制文件不能設置編碼方式

2.2文件操作

2.2.1文件讀操作

文件對象.read(字節(jié)數(shù)) --獲取文件中讀寫位置往后字節(jié)數(shù)的內(nèi)容并返回(回車算一個字節(jié))浸卦,不寫字節(jié)數(shù)參數(shù)表示從讀寫位置開始,讀到文件結(jié)尾案糙,并且返回(初始讀寫位置默認在文件開頭)限嫌,結(jié)果類型是str

文件對象.seek(字節(jié)數(shù)) --將讀寫位置移動到指定字節(jié)數(shù)處靴庆,為0表示文件最開始的位置

文件對象.readline(字節(jié)數(shù)) --讀取當前讀寫位置所在行后字節(jié)數(shù)的內(nèi)容,若字節(jié)數(shù)為空怒医,則讀取讀寫位置到當前行末的內(nèi)容并返回炉抒,結(jié)果類型是str

文件對象.readlines(字節(jié)數(shù)) --讀取讀寫位置所在行后字節(jié)數(shù)的內(nèi)容,結(jié)果是list稚叹,且list列表的元素是每行內(nèi)容的字符串格式(加引號)焰薄。元素內(nèi)容不包含讀寫位置所在行之前的內(nèi)容。且最后的讀寫位置所在行的整行內(nèi)容都會作為元素內(nèi)容(即使不是在行末)扒袖。此時讀寫位置也會移到下行行首塞茅。若不加字節(jié)數(shù)保留為空則讀取讀寫位置所在行后到文件末尾的內(nèi)容,結(jié)果是list僚稿,且list列表的元素是每行內(nèi)容的字符串格式(加引號)凡桥,元素內(nèi)容不包含讀寫位置所在行之前的內(nèi)容。

2.2.2文件寫操作

文件對象.write(寫的內(nèi)容) --將制定內(nèi)容寫到指定文件中蚀同,根據(jù)open時mode是w還是a缅刽,來決定是覆蓋還是追加內(nèi)容。返回結(jié)果是寫入的str內(nèi)容的長度蠢络。

文件對象.writelines() --和write差不多呢衰猛。。

2.3關(guān)閉文件

文件對象.close()

注意:當打開文件的時候如果以讀的方式打開一個不存在的文件會報錯刹孔,以寫(w啡省,a)打開一個不存在的文件則不會出現(xiàn)異常,并且會自動創(chuàng)建對應的文件再打開髓霞。

2.4二進制文件的操作

2.4.1二進制操作

打開文件時mode加b參數(shù)卦睹,且encoding不能再寫utf-8了

rb --讀的時候,獲取到的是二進制數(shù)據(jù)(bytes)

wb --寫的時候要求寫入內(nèi)容類型是二進制

普通的文本文件可以通過二進制的形式去打開方库,影響只是獲取到的內(nèi)容结序,和寫進去的內(nèi)容的數(shù)據(jù)類型。

二進制文件只能以二進制形式打開(例如:圖片纵潦,視頻徐鹤,音頻等)

2.4.2二進制數(shù)據(jù)

一般二進制數(shù)據(jù)都是通過網(wǎng)絡請求獲取到,或者通過讀取本地的二進制文件來取到邀层。

將字符串轉(zhuǎn)換成二進制:

bytes(字符串返敬,編碼方式)

字符串.encode(編碼方式)

將二進制轉(zhuǎn)換成字符串:

str(二進制數(shù)據(jù),編碼方式)

二進制數(shù)據(jù).decode(編碼方式)

以上編碼方式一般都為utf-8

2.5文件上下文

with open(文件路徑寥院,打開方式劲赠,編碼方式) as 文件對象:

? 操作文件

文件操作完成后,會自動關(guān)閉


3.json

3.1json數(shù)據(jù)

滿足json格式的數(shù)據(jù)就是json數(shù)據(jù)

json格式:一個json有且只有一個數(shù)據(jù),這個數(shù)據(jù)必須滿足是json支持的數(shù)據(jù)類型

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

數(shù)字(number) --包含所有的數(shù)字(整數(shù)和小數(shù))凛澎,如:3泌绣,-4,3.14预厌,3e4

字符串(string) --只能用雙引號引起來的字符集,字符也支持轉(zhuǎn)義字符元媚,編碼字符轧叽,如"abc\n","123as"刊棕,"學習"炭晒,"\u4e00cv"

布爾(bool) --true/false,首字母都小寫

數(shù)組(array) --相當于python中的列表甥角,如['adc',123,true,[123,'123','asd']]

字典(dictionary) --相當于python中的字典网严,json字典中key值要求必須是字符串

空值 --null,相當于None

3.2使用json

解析json數(shù)據(jù)(獲取到json數(shù)據(jù)后嗤无,將json中想要的東西解析出來) --做前端開發(fā)人員的工作

構(gòu)造json數(shù)據(jù):

在python中有一個內(nèi)置庫震束,專門負責json數(shù)據(jù)的處理:json庫(import json)

  1. 將json數(shù)據(jù)轉(zhuǎn)換為python:

json數(shù)據(jù) python數(shù)據(jù)

number int/float

string str,可能會出現(xiàn)將雙引號變單引號

bool bool当犯,true->True,false ->False

array list

dictionary dict

空 null->None

json.loads(字符串,encoding='utf-8') --解析json數(shù)據(jù)垢村,返回json對應的python數(shù)據(jù)

字符串要求:字符串中內(nèi)容本身就是一個json數(shù)據(jù)(去掉引號后,本身就是一個json數(shù)據(jù))

  1. python轉(zhuǎn)json

python數(shù)據(jù) json數(shù)據(jù)

int/float number

bool bool,True -> true,False-> false

str string,將單引號變?yōu)殡p引號

list/tuple array

dict dictionary

空 None->null

json.dumps(python數(shù)據(jù)) -->將python數(shù)據(jù)轉(zhuǎn)換為對應的json數(shù)據(jù)字符串嚎卫,結(jié)果是字符串嘉栓。

  1. json文件操作

json.load(文件對象) --將文件對象中文件內(nèi)容轉(zhuǎn)換成python數(shù)據(jù),文件內(nèi)容必須是json數(shù)據(jù)

json.dump(python數(shù)據(jù)拓诸,文件對象) --將python數(shù)據(jù)轉(zhuǎn)換成json字符串再寫入指定文件中


4.應用

  1. 數(shù)據(jù)怎么本地化

數(shù)據(jù)保存在本地文件中一份

每次需要用到這個數(shù)據(jù)的時候侵佃,不是直接給值,而是從本地文件中讀取他的值

數(shù)據(jù)修改完后奠支,要將最新的數(shù)據(jù)保存在本地文件中

  1. 什么時候用到json文件

需要持久化的數(shù)據(jù)是字典馋辈,列表,元祖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胚宦,一起剝皮案震驚了整個濱河市首有,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枢劝,老刑警劉巖井联,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異您旁,居然都是意外死亡烙常,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚕脏,“玉大人侦副,你說我怎么就攤上這事⊥毡蓿” “怎么了秦驯?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挣棕。 經(jīng)常有香客問我译隘,道長,這世上最難降的妖魔是什么洛心? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任固耘,我火速辦了婚禮,結(jié)果婚禮上词身,老公的妹妹穿的比我還像新娘厅目。我一直安慰自己,他們只是感情好法严,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布损敷。 她就那樣靜靜地躺著,像睡著了一般渐夸。 火紅的嫁衣襯著肌膚如雪嗤锉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天墓塌,我揣著相機與錄音瘟忱,去河邊找鬼。 笑死苫幢,一個胖子當著我的面吹牛访诱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播韩肝,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼触菜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哀峻?” 一聲冷哼從身側(cè)響起涡相,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎剩蟀,沒想到半個月后催蝗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡育特,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年丙号,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡犬缨,死狀恐怖喳魏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情怀薛,我是刑警寧澤刺彩,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站枝恋,受9級特大地震影響迂苛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鼓择,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望就漾。 院中可真熱鬧呐能,春花似錦、人聲如沸抑堡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽首妖。三九已至偎漫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間有缆,已是汗流浹背象踊。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棚壁,地道東北人杯矩。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像袖外,于是被迫代替她去往敵國和親史隆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355