python學習筆記 九 IO程式設計

2021-06-28 14:53:56 字數 2426 閱讀 5444

一. 檔案讀寫:

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 f.readlines(): # readlines可以讀取一行

print(line.strip()) # 把末尾的'\n'刪掉

import codecs

with codecs.open('d:\\1.txt', 'r', 'gbk') as f: # 使用codecs可以指定編碼

for line in f.readlines():

print(line.strip())

2. 寫檔案:
f = open('d:\\1.txt', 'w') # 寫二進位制位wb

f.write('hello, world!')

f.close()

二. 操作檔案和目錄:

python的os模組封裝了作業系統的目錄和檔案操作,要注意這些函式有的在os模組中,有的在os.path模組中

import os

print os.environ # 獲取作業系統的環境變數

print os.getenv('path') # 獲取環境變數中path的值

print os.path.abspath('.') # 檢視當前目錄的絕對路徑

os.mkdir('d:\\test') # 然後建立乙個目錄

os.rmdir('d:\\test') # 刪掉乙個目錄

print os.path.join('d:\\test', 'tt') # 把兩個路徑合併成乙個 d:\test\tt

print os.path.split('d:\\test\\1.txt') # 拆分路徑('d:\\test', '1.txt')

print os.path.splitext('d:\\test\\1.txt') # 獲取拓展名 ('d:\\test\\1', '.txt')

三. 序列化

try:

import cpickle as pickle # 匯入cpickle(c語言寫的)

except importerror:

import pickle # 匯入失敗就匯入pickle(python寫的)

d = dict(name='bob', age=20, score=88)

f = open('d:\\dump.txt', 'wb')

pickle.dump(d, f) # 資料序列化到檔案

f.close()

f = open('d:\\dump.txt', 'rb')

d = pickle.load(f) # 資料反序列化到記憶體

f.close()

print d

四. json:

json和python物件之間轉換:

import json

d = dict(name='bob', age=20, score=88)

# 序列化python為json格式

print json.dumps(d) #

# json反序列化成python物件

json_str = ''

print json.loads(json_str) #

定製json序列化和反序列化:

import json

class student(object):

def __init__(self, name, age, score):

self.name = name

self.age = age

self.score = score

# 定製json序列化

def student2dict(std):

return

s = student('bob', 20, 88)

print(json.dumps(s, default=student2dict))

# 定製反序列化json

def dict2student(d):

return student(d['name'], d['age'], d['score'])

json_str = ''

print(json.loads(json_str, object_hook=dict2student))

python學習筆記 IO程式設計

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

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

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

Python學習筆記 四 IO程式設計

使用open 函式開啟檔案,返回乙個檔案物件,可選擇傳參模式和緩衝區,預設是讀模式,緩衝區是無 利用open 函式可以開啟檔案,如下 open 的第二個引數是 r 表示的是讀檔案,第三個引數encoding指定的是檔案的編碼格式.filepath d cc.txt f open filepath,r...