博客地址:http://www.cnblogs.com/yudanqu/編碼
要把大象裝冰箱,須要分幾步?對於讀寫文件也是這樣簡單的流程,打開文件、讀取文件和關閉文件。spa
描述符:文件全部操做涉及到描述符,描述符就是一個光標,讀取數據能夠從光標開始向後依次讀,等等。操作系統
open(path, flag[, encoding][, errors])
1 # 小栗子 2 f = open(path, "r", encoding="utf-8", errors="ignore") 3 # ignore 忽略錯誤,通常不寫後兩個參數
1 # 讀取文件所有內容 2 str1 = f.read() # 讀文件比較小的,大的內存放不下 3 4 # 讀取指定字符數(按字符數) 5 str2 = f.read(10) # 一個字母和一個漢字都稱爲一個字符 6 7 # 讀取整行,包括"\n"字符 8 str3 = d.readline() 9 10 # 讀取指定字符數 11 str4 = f.readline(10) 12 13 # 讀取全部行並返回列表 14 str5 = f.readlines() 15 16 # 若給定的數字大於0,返回實際size字節的行數 17 str6 = f.readlines(25) # 例如25個字節,每行存10個,那麼此時讀取兩行 18 19 # 修改描述符的位置 20 f.seek(10) # 改到第幾個字符的位置
1 f.close()
# 一個完整的過程 try: f1.open(path, "r", encoding="utf-8") print(f1.read()) finally: if f1: f1.close() # try...except...else...finally是異常處理的內容,這個例子用到的部分表示,若是打開讀取文件部分出錯,只要文件存在那麼就在最後把文件關閉,這是一個很好的習慣,就好比說在Linux操做系統中,限制打開的文件數不超過1024個若是超過了,文件就打不開了
固然這樣寫文件有些繁雜,那麼還有更方便的方法:code
# 簡單方法: with open(path, "r", encoding="utf-8") as f2: print(f2.read()) # with能夠把文件關閉的部分實現,不論咱們是否操做,是否有錯誤,都會在最後幫咱們把文件關閉,也避免了咱們忘記關文件的困擾
1 f = open(path,"w") # 首先以寫方式打開文件 2 3 # 將信息寫入緩衝區,而並無直接寫入文件當中,也就是說咱們在寫文件時看文件中,沒有信息隨時寫入 4 f.write("glabscufn") 5 6 # 刷新緩衝區(要想邊寫邊存入文件的話能夠手動刷新緩衝區) 7 f.flush() # 直接把內部緩衝區的數據馬上寫入文件,而不是被動的等待文件關閉自動刷新緩衝區寫入 8 9 ''' 10 緩衝區的刷新: 11 一、文件關閉自動刷新 12 二、手動flush刷新 13 三、緩衝區滿了也能夠自動刷新 14 四、再有就是遇到'\n'也會刷新 15 ''' 16 17 f.close()
1 with open(path, "wb") as f1: 2 str = "asdasdasdasd" 3 f1.write(str.encode('utf-8')) # 用utf-8編碼
1 with open(path, "rb") as f2: 2 data = f2.read() 3 new_data = data.decode("utf-8") 4 print(type(data)) # class<byte> 5 print(type(new_data)) # class<str> 6 # 主要是在有中文的狀況下,其餘狀況不一樣的碼可能也譯碼正確 7 # 若是是二進制的字符串,要記得編碼解碼
1 import pickle # 數據持久性模塊,就是把數據存到磁盤 2 3 # 寫 4 mylist = [1,2,3,4,5,"sadd"] 5 f = open(path, "wb") 6 pickle.dump(mylist, f) 7 f.close() 8 9 # 讀 10 f1 = open(path, "rb") 11 templist = pickle.load(f1) 12 print(templist) 13 f1.close()
做者:漁單渠(yudanqu)blog