stringio和bytesio
操作檔案和目錄
序列化 pickling
name:input/output
face:磁碟,網路
model:stream(流) from / to 記憶體
time:stop?同步:非同步
由於非同步io比較複雜,本章都是同步io,非同步io在後邊網路伺服器提及。
開啟open(filename,mode) #作業系統同一時間能開啟的檔案數量
讀 read()全部讀取,或read(size)每次讀一些 readline()每次讀一行 readlines()讀所有返回list
關閉 close()
為避免出現ioerror導致不能close,所以需要try,或者使用with 方法(本質與try一樣,只是簡化)
read()
file 記憶體的位元組流 網路流 自定義流 如.stringio 就有read()方法,用於緩衝
open 使用encoding關鍵字引數
errors關鍵字引數忽略編碼錯誤
與讀檔案一樣
open 模式:『w』 『wb』 『a』(追加到尾)
write()
close
with 語句
encoding
在記憶體中讀寫str
from io import stringio
f.write(『***』)
f.getvalue()
f.read()
可以操作二進位制資料
os模組
os.name nt:windows posix:unix/linux/mac
os.environ
os.environ.get(『key』)
目錄os.path
abspath
join
split 獲得檔名
splitext 獲得副檔名
mkdir
rmdir
isdir 是目錄
exists 目錄或檔案存在
檔案rename
remove
shutil模組,copyfile() 拷貝檔案
listdir 所有檔案及目錄
怎麼把類的乙個例項資料存到磁碟上?
pickle模組實現序列化
pickle.dumps(d) instance --> bytes
pickle.dump(d,f) instance --> bytes --> file-like object
反序列化
pickle.loads(bs) bytes --> instance
pickle.load(f) file-like object --> bytes --> instance
python版本不同,可能序列化的資料也不同,反序列化就會不一樣,所以最好序列化成標準模式xml 或 更好用的json(效率好,支援web)
json模組可以把dict序列化成json字串,也能反序列化
import json
json.dumps(d) dict --> json
json.dump(d,f)
json.loads(『json_str』)
json.load(f)
對於一般class的例項,需要設定乙個轉換函式,再把函式作為引數傳入
同樣反序列化也需要乙個轉化函式(dict --> instance)
知識點:通常class的__dict__用來儲存例項的變數
Python學習筆記(9) IO程式設計
1 檔案讀寫 1 由於檔案讀寫時都有可能產生ioerror,一旦出錯,後面的f.close 就不會呼叫。所以,為了保證無論是否出錯都能正確地關閉檔案,我們可以使用try finally來實現 try f open path to file r print f.read finally if f f....
python淺學筆記20 非同步IO
cpu速度遠遠快於 網路 磁碟 io 在乙個執行緒裡,io會阻塞其它 的執行。為了不阻塞,就要用多執行緒或多程序,雖然併發可以解決這個問題,但是系統不能無上限的增加執行緒,系統切換執行緒的開銷也很大 另一種解決問題的方法非同步io,cpu負責 的執行,io操作由io裝置執行,負責開啟乙個io操作,並...
java基礎9 io流物件之流的操作規律及總結
1,流的操作規律 io流中物件很多,解決問題 處理裝置上的資料時 到底該用哪個物件呢?把io流進行了規律的總結 四個明確 l 明確一 要操作的資料是資料來源還是資料目的。源 inputstream reader 目的 outputstream writer 先根據需求明確要讀,還是要寫。l 明確二 ...