python淺學筆記9 IO程式設計

2021-09-23 18:35:51 字數 1732 閱讀 7480

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 明確二 ...