Python - StringIO | BytesIO | file-like Object | 序列化 | JSON |

1.單元測試

①是什么郑原?

  • 對一個模塊、一個函數(shù)或者一個類進行正確性檢驗的測試工作护侮。

②最好的好處群叶?

  • 確保一個程序模塊的行為符合我們設(shè)計的測試用例吃挑。
2.同步/異步IO
  • 假設(shè)要把100M的數(shù)據(jù)寫入磁盤,CPU輸出100M的數(shù)據(jù)只需0.01秒街立,而磁盤接收這100M的數(shù)據(jù)可能需要10秒舶衬。
    ①同步IO,CPU等著几晤,也就是程序暫停執(zhí)行后續(xù)代碼约炎,等100M的數(shù)據(jù)在10秒后寫入磁盤,再進行別的操作蟹瘾。
    ②異步IO圾浅,CPU不等待,后續(xù)代碼可以立即執(zhí)行憾朴。
3.由于文件讀寫時都有可能產(chǎn)生IOError狸捕,一旦出錯,后續(xù)的f.close()將不會調(diào)用众雷。所以灸拍,為了保證無論是否出錯都能正確地關(guān)閉文件做祝,可以通過try...finally實現(xiàn)。
try:
    f = open('/path/to/file','r')
    print(f.read())
finally:
    if f:
        f.close()

還有種簡便的方式:

with open('/path/to/file','r') as f:
    print(f.read())
4.如果文件很小鸡岗,read()一次性讀取最方便混槐;如果不能確定文件大小,反復調(diào)用read(size)比較保險轩性;如果是配置文件声登,調(diào)用readlines()最方便。
for line in f.readlines():
    print(line.strip())#把末尾的'\n'刪掉
5.像open()函數(shù)返回的這種有個read()方法的對象揣苏,在Python中統(tǒng)稱為file-like Object悯嗓。除了file外,還可以是內(nèi)存的字節(jié)流卸察、網(wǎng)絡(luò)流脯厨、自定義流等等。StringIO就是在內(nèi)存中創(chuàng)建的file-like Object坑质,常用作臨時緩沖合武。
6.用with語句來讀取文件中的數(shù)據(jù)或向文件中寫入數(shù)據(jù)較為保險。
用with語句來讀取和寫入文本數(shù)據(jù).png
7.StringIO

①很多時候洪乍,數(shù)據(jù)讀寫不一定是文件眯杏,也可以在內(nèi)存中讀寫。

StringIO.png
  • getvalue()方法用于獲得寫入的str

②可以用一個str來初始化StringIO壳澳,然后,像讀文件一樣讀取茫经。

讀取StringIO.png
8.BytesIO

BytesIO用于操作二進制數(shù)據(jù)巷波。

BytesIO實現(xiàn)在內(nèi)存中讀寫bytes.png
9.StringIOBytesIO是在內(nèi)存中操作strbytes的方法,和讀寫文件具有一致的接口卸伞。
10.在當前目錄下抹镊,創(chuàng)建一個新的目錄。
11.拆分路徑和獲得文件拓展名
split和splitext.png
12.列出當前目錄下的所有目錄和所有.py文件
列出當前目錄下的所有子目錄和py文件.png
13.查找當前目錄或其子目錄下包含change字符串的文件荤傲。
查找當前目錄或子目錄下包含change字符串的文件.png
14.序列化

①是什么垮耳?

  • 把變量從內(nèi)存中變成可存儲或傳輸?shù)倪^程。在Python中叫做pickling遂黍。

Python提供pickle模塊來實現(xiàn)序列化终佛。

pickle.dumps() - 把任何對象序列化成一個bytes

pickle_dumps.png

pickle.dump() - 直接把對象序列化后寫入一個file-like Object

pickle_dump().png

pickle.loads() - 將bytes反序列化出對象

pickle_loads().png

pickle.load() - 從一個file-like Object中直接反序列化出對象

pickle_load().png
15.JSON

Python內(nèi)置的json模塊提供了非常完善的Python對象到JSON格式的轉(zhuǎn)換。

dumps()方法返回一個str雾家,內(nèi)容就是標準的JSON铃彰。類似的,dump()方法可以直接把JSON寫入一個file-like Object芯咧。

json_dumps().png

③要把JSON反序列化成Python對象牙捉,可以使用loads()或?qū)?code>load()方法竹揍,前者把JSON的字符串反序列化,后者從file-like Object中讀取字符串并反序列化邪铲。

json_loads().png
16.將一個Class轉(zhuǎn)換成JSON對象的兩種方式

①創(chuàng)建一個student2dict()函數(shù)

stdudent2dict().png

default lambda obj: obj.__dict__芬位。因為通常class的實例都有一個__dict__屬性,它就是一個dict带到,用來存儲實例變量晶衷。

obj___dict__.png

17.對于類,將JSON對象反序列化成dict對象
反序列化類.png

②傳入的object_hook()函數(shù)將dict轉(zhuǎn)換成Student實例

打印出來的是反序列化的Student實例對象.png
18.進程和線程

①對于操作系統(tǒng)來說阴孟,一個任務就是一個進程Process晌纫。

②在一個進程內(nèi)部,可能需要干多件事情永丝,就需要同時運行多個"子任務"锹漱,這些"子任務"就稱為線程Thread。如在Word中慕嚷,可以同時打字哥牍、拼寫檢查、打印等等喝检。

③線程是最小的執(zhí)行單元嗅辣,而進程至少由一個線程組成。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挠说,一起剝皮案震驚了整個濱河市澡谭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌损俭,老刑警劉巖蛙奖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杆兵,居然都是意外死亡雁仲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門琐脏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攒砖,“玉大人,你說我怎么就攤上這事日裙〈低В” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵阅签,是天一觀的道長掐暮。 經(jīng)常有香客問我,道長政钟,這世上最難降的妖魔是什么路克? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任樟结,我火速辦了婚禮,結(jié)果婚禮上精算,老公的妹妹穿的比我還像新娘瓢宦。我一直安慰自己,他們只是感情好灰羽,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布驮履。 她就那樣靜靜地躺著,像睡著了一般廉嚼。 火紅的嫁衣襯著肌膚如雪玫镐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天怠噪,我揣著相機與錄音恐似,去河邊找鬼。 笑死傍念,一個胖子當著我的面吹牛矫夷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播憋槐,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼双藕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了阳仔?” 一聲冷哼從身側(cè)響起忧陪,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驳概,沒想到半個月后赤嚼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡顺又,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了等孵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稚照。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖俯萌,靈堂內(nèi)的尸體忽然破棺而出果录,到底是詐尸還是另有隱情,我是刑警寧澤咐熙,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布弱恒,位于F島的核電站,受9級特大地震影響棋恼,放射性物質(zhì)發(fā)生泄漏返弹。R本人自食惡果不足惜锈玉,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望义起。 院中可真熱鬧拉背,春花似錦、人聲如沸默终。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽齐蔽。三九已至两疚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間含滴,已是汗流浹背诱渤。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛙吏,地道東北人源哩。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像鸦做,于是被迫代替她去往敵國和親励烦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

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

  • IO編程概念 IO在計算機中指Input/Output泼诱,也就是輸入和輸出坛掠。由于程序和運行時數(shù)據(jù)是在內(nèi)存中駐留,由C...
    時間之友閱讀 726評論 0 0
  • 文件讀寫 讀寫文件是最常見的IO操作治筒。Python內(nèi)置了讀寫文件的函數(shù)屉栓,用法和C是兼容的。由于文件讀寫時都有可能產(chǎn)...
    時間之友閱讀 467評論 0 0
  • 1 前言 在“通過簡單示例來理解什么是機器學習”這篇文章里提到了pickle庫的使用耸袜,本文來做進一步的闡述友多。 pi...
    leenard閱讀 1,978評論 0 2
  • 前些天,八年的閨蜜分分合合終于齊聚漢紙的豪宅堤框,本意是為了給漢紙?zhí)崆斑^生日域滥,但那晚無論是酒精過敏還是滴酒不沾最后都喝...
    弎渣閱讀 372評論 1 2
  • 雖然有火遍大江南北的《小幸運》 但是我覺得Hebe的曲風越來越偏小眾了 很多人應該會首次聽沒有感覺 可是越聽越有味...
    HeySkywalker閱讀 388評論 0 0