Python學習筆記 四 IO程式設計

2021-08-23 12:25:08 字數 2096 閱讀 1447

使用open()函式開啟檔案,返回乙個檔案物件,可選擇傳參模式和緩衝區,預設是讀模式,緩衝區是無

利用open()函式可以開啟檔案, 如下**,open()的第二個引數是』r』,表示的是讀檔案,第三個引數encoding指定的是檔案的編碼格式.

filepath = 'd:/cc.txt'

f = open(filepath, 'r', encoding='utf-8')

filecontent = f.read()

#文件使用完必須關閉,釋放資源

f.close()

print(filecontent)

由於在讀寫檔案的時候,也會發生異常,導致f.close()調不到,可以使用with語句來自動幫我們呼叫close()方法

with

open(filepath, 'r', encoding='utf-8') as readfile:

print(readfile.read())

呼叫read()是讀取檔案全部內容到記憶體,如果檔案太大容易記憶體不足.

呼叫readline()每次讀取一行內容

with open('d:/caesar-local.log', 'r', encoding='utf-8') as logfile:

thisline = logfile.readline()

while thisline:

print(thisline)

thisline = logfile.readline()#再讀取一行

或者

with

open('d:/caesar-local.log', 'r', encoding='utf-8') as logfile:

forline

in logfile.readlines():

print(line.strip())

filepath = 'd:/cc.txt'

with

open(filepath, 'w') as f:

f.write("hello, pigg!")

try:

import cpickle as pickle

except importerror:

import pickle

#定義乙個字典

d = dict(name='winter', age=13)

#dumps方法可將物件轉成str

str_d = pickle.dumps(d)

print('str_d = ', str_d)

#dump方法可以將序列化的物件直接寫入檔案中

f = open('d:/a.txt', 'wb')

pickle.dump(d, f)

f.close()

儲存到檔案裡的值是看不懂的位元組

€}q (x   nameqx   winterqx   ageqku.
當我們要把物件從磁碟讀到記憶體時,可以先把內容讀到乙個bytes,然後用pickle.loads()方法反序列化出物件,也可以直接用pickle.load()方法從乙個file-like object中直接反序列化出物件

d = pickle.loads(str_d)

print("d = ", d)

file = open('d:/a.txt', 'rb')

d = pickle.load(file)

file.close()

print(d)

d =  

python內建的json模組提供了非常完善的python物件到json格式的轉換。我們先看看如何把python物件變成乙個json

import json

user = dict(name='wd', age=28)

userjson = json.dumps(user)

print(userjson) #列印出

python學習筆記 IO程式設計

由於cpu和記憶體的速度遠遠高於外設的速度,所以,在io程式設計中,就存在速度嚴重不匹配的問題。舉個例子來說,比如要把100m的資料寫入磁碟,cpu輸出100m的資料只需要0.01秒,可是磁碟要接收這100m資料可能需要10秒,怎麼辦呢?有兩種辦法 第一種是cpu等著,也就是程式暫停執行後續 等10...

python學習筆記 九 IO程式設計

一.檔案讀寫 1.讀檔案 try f open d 1.txt r 讀取普通檔案 f open d 1.jpg rb 讀取二進位制檔案 f.read finally if f f.close with open d 1.txt r as f 使用with會自動呼叫close for line in ...

Python學習筆記(七)IO程式設計

f open r r表示讀模式 f.read 將檔案內容讀入記憶體並用乙個str表示 f.close 為了節省系統資源,使用完之後要關閉檔案為了避免檔案不存在的錯誤而無法往後執行close函式,可以使用try.finally來處理。但這種方法略顯繁瑣,因此使用with來處理,也不必呼叫close函式...