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ù)較為保險。
7.StringIO
①很多時候洪乍,數(shù)據(jù)讀寫不一定是文件眯杏,也可以在內(nèi)存中讀寫。
-
getvalue()
方法用于獲得寫入的str
②可以用一個str
來初始化StringIO
壳澳,然后,像讀文件一樣讀取茫经。
8.BytesIO
①BytesIO
用于操作二進制數(shù)據(jù)巷波。
9.StringIO
和BytesIO
是在內(nèi)存中操作str
和bytes
的方法,和讀寫文件具有一致的接口卸伞。
10.在當前目錄下抹镊,創(chuàng)建一個新的目錄。
11.拆分路徑和獲得文件拓展名
12.列出當前目錄下的所有目錄和所有.py
文件
13.查找當前目錄或其子目錄下包含change
字符串的文件荤傲。
14.序列化
①是什么垮耳?
- 把變量從內(nèi)存中變成可存儲或傳輸?shù)倪^程。在
Python
中叫做pickling
遂黍。
②Python
提供pickle
模塊來實現(xiàn)序列化终佛。
③pickle.dumps()
- 把任何對象序列化成一個bytes
④pickle.dump()
- 直接把對象序列化后寫入一個file-like Object
⑤pickle.loads()
- 將bytes
反序列化出對象
⑥pickle.load()
- 從一個file-like Object
中直接反序列化出對象
15.JSON
①Python
內(nèi)置的json
模塊提供了非常完善的Python
對象到JSON
格式的轉(zhuǎn)換。
②dumps()
方法返回一個str
雾家,內(nèi)容就是標準的JSON
铃彰。類似的,dump()
方法可以直接把JSON
寫入一個file-like Object
芯咧。
③要把JSON
反序列化成Python
對象牙捉,可以使用loads()
或?qū)?code>load()方法竹揍,前者把JSON
的字符串反序列化,后者從file-like Object
中讀取字符串并反序列化邪铲。
16.將一個Class
轉(zhuǎn)換成JSON
對象的兩種方式
①創(chuàng)建一個student2dict()
函數(shù)
②default lambda obj: obj.__dict__
芬位。因為通常class
的實例都有一個__dict__
屬性,它就是一個dict
带到,用來存儲實例變量晶衷。
17.對于類,將JSON
對象反序列化成dict
對象
②傳入的object_hook()
函數(shù)將dict
轉(zhuǎn)換成Student
實例
18.進程和線程
①對于操作系統(tǒng)來說阴孟,一個任務就是一個進程Process
晌纫。
②在一個進程內(nèi)部,可能需要干多件事情永丝,就需要同時運行多個"子任務"锹漱,這些"子任務"就稱為線程Thread
。如在Word中慕嚷,可以同時打字哥牍、拼寫檢查、打印等等喝检。
③線程是最小的執(zhí)行單元嗅辣,而進程至少由一個線程組成。