python--檔案操作

來源:互聯網
上載者:User

標籤:字母   seek   adl   檔案中   pat   限制   else   直接   encoding   

  部落格地址:http://www.cnblogs.com/yudanqu/

 

一、讀檔案

  要把大象裝冰箱,需要分幾步?對於讀寫檔案也是這樣簡單的流程,開啟檔案、讀取檔案和關閉檔案。

  描述符:檔案所有操作涉及到描述符,描述符就是一個游標,讀取資料可以從游標開始向後依次讀,等等。

1、開啟檔案
open(path, flag[, encoding][, errors])
  • path:要開啟檔案的路徑
  • flag:開啟檔案
    • r    以唯讀方式開啟檔案,檔案的描述符放在檔案的開頭
    • rb  以二進位格式開啟一個檔案用於唯讀,檔案的描述符放在檔案的開頭
    • r+  開啟一個檔案用於讀寫,檔案的描述符放在檔案的開頭
    • w   開啟一個檔案只用於寫入,如果該檔案已經存在會覆蓋,不存在則建立新檔案
    • wb 開啟一個檔案只用於寫入二進位,如果該檔案已經存在會覆蓋,不存在則建立新檔案
    • w+ 開啟一個檔案用於讀寫,如果該檔案已經存在會覆蓋,不存在則建立新檔案
    • a    開啟一個檔案用於追加如果檔案存在,檔案描述符將會放到檔案末尾
    • a+  
  • encoding:編碼方式(一般utf-8)
  • errors:錯誤處理(一般不處理)
1 # 小栗子2 f = open(path, "r", encoding="utf-8", errors="ignore")3 # ignore 忽略錯誤,一般不寫後兩個參數
2、讀檔案內容
 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) # 改到第幾個字元的位置
3、關閉檔案
1 f.close()
4、小栗子
# 一個完整的過程try:    f1.open(path, "r", encoding="utf-8")    print(f1.read())finally:    if f1:        f1.close()# try...except...else...finally是異常處理的內容,這個例子用到的部分表示,如果開啟讀取檔案部分出錯,只要檔案存在那麼就在最後把檔案關閉,這是一個很好的習慣,就比如說在Linux作業系統中,限制開啟的檔案數不超過1024個如果超過了,檔案就打不開了

  當然這樣寫檔案有些繁雜,那麼還有更方便的方法:

# 簡單方法: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 1、檔案關閉自動重新整理 12 2、手動flush重新整理 13 3、緩衝區滿了也可以自動重新整理 14 4、再有就是遇到‘\n‘也會重新整理15 ‘‘‘16 17 f.close()

 

三、編碼與解碼1、編碼
1 with open(path, "wb") as f1:2     str = "asdasdasdasd"3     f1.write(str.encode(‘utf-8‘)) # 用utf-8編碼
2、 解碼
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 # 如果是二進位的字串,要記得編碼解碼

 

四、list,tuple,dict,set
 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)

  部落格地址:http://www.cnblogs.com/yudanqu/

python--檔案操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.