python基礎09_檔案操作

來源:互聯網
上載者:User

標籤:比較   讀一行   4.0   換行   處理   異常   解碼   位元組   list   

一. 檔案操作的基本流程

#1.開啟檔案,得到檔案控制代碼並賦值給一個變數f1=open(‘b.txt‘,‘r‘,encoding=‘utf-8‘)
#2.通過控制代碼對檔案進行操作content=f1.read()print(content)
#3. 關閉檔案**一定要記得加上f1.close() 

說明: f1,檔案控制代碼,檔案對象.

open(‘檔案路徑‘),預設開啟檔案r,預設開啟編碼是作業系統的預設編碼:windows是gbk編碼,linux和mac預設是utf-8

二.檔案編碼

三.檔案開啟模式

開啟檔案的模式有:

  • r , 唯讀模式,
  • w, 唯寫模式,【不可讀,不存在則建立,存在則刪除檔案中的內容】
  • a, 追加模式,【不可讀,不存在則建立,存在則只追加內容】

"+" 表示可以同時讀寫某個檔案

  • r+
  • w+
  • a+

"b"表示處理二進位檔案

  • rb
  • wb
  • ab

四.讀取檔案的方式

1.read

1) read當不傳參數的時候,讀取所有內容.注意:當檔案比較大時,會佔用很大的記憶體,不推薦使用.

2) 傳參,如果是以r方式開啟,參數指的是讀取多少個字元

3) 傳參,如果是以rb方式開啟,傳輸指的是讀取多少個位元組.如網路傳輸\圖片\視頻常用rb模式.

假如有檔案a.log,檔案內容為

三月的天氣四月的天氣5月的天氣6月的天氣7月的天氣

例子1:以r模式開啟,read() 會讀取檔案所有的內容.

with open("a.log",encoding="utf-8",mode="r") as f:    content=f.read()    print(content)運行結果:三月的天氣四月的天氣5月的天氣6月的天氣7月的天氣

 

例子2:以r模式開啟,read(n),會讀取n個字元

1 with open("a.log",encoding="utf-8",mode="r") as f:2     content=f.read(3)3     print(content)4 5 運行結果:6 三月的

例子3:以rb模式開啟,read(n)會讀取n個位元組

1 with open("a.log",mode="rb") as f:2     content=f.read(3)3     print(content)4 運行結果:5 b‘\xe4\xb8\x89‘

 

2.readline

  一行一行讀,每次讀取一行,不會自動停止

3.for 迴圈

  一行一行讀,從第一行開始每次讀一行,督導沒有之後就停止

4.readlines

 

五.寫檔案

write: 寫內容,參數為字串

writelines:寫內容,參數為列表list

需要注意的問題:

1) w模式開啟,寫的是字元

2) wb模式開啟,寫的是位元組

3) 寫的過程中不會自動換行,需要自己添加分行符號\n

例子:

1 with open(r"b.log",encoding="utf-8",mode="w") as f:2     f.write("假如生活欺騙了你")3     f.writelines(["假如生活欺騙了你\n","不要悲傷,不要心急\n","憂鬱的日子裡須要鎮靜\n","相信吧,快樂的日子將會來臨!\n"])

寫入檔案的內容:

1 題目:假如生活欺騙了你2 假如生活欺騙了你3 不要悲傷,不要心急4 憂鬱的日子裡須要鎮靜5 相信吧,快樂的日子將會來臨!

六.檔案的修改

python修改檔案的步驟

1)開啟原檔案,產生檔案控制代碼
2)建立新檔案,產生檔案控制代碼
3)讀取原檔案,進行修改,寫入新檔案
4)將源檔案刪除
5)新檔案重新命名
1 import os2 with open("b.txt",encoding=‘utf-8‘,mode="r") as f1,3     open("b.txt_bak",encoding="utf-8",mode="w") as f2:4     for i in f1:5         new_content=i.replace("china","Chinese")6         f2.write(new_content)7     os.remove("b.txt")8     os.renames("b.txt_bak","b.txt")

 

六.檔案中的指標

  • seek() : 用來指定當前指標的位置,指的是位元組.注意在utf-8編碼中,一個漢字佔3個位元組
  • tell() : 指出當前指標所在的位置

例子:

 1 with open("a.log",encoding="utf-8",mode="r") as f: 2     f.seek(3) 3     content=f.read() 4     print(content) 5     print(f.tell()) 6 運行結果: 7 月的天氣 8 四月的天氣 9 5月的天氣10 6月的天氣11 7月的天氣12 73

如果把該例子中的seek(3)改為seek(2),運行會報錯,原因utf-8編碼一個漢字佔3個位元組,如果把指標調到第2個位元組,utf-8解碼時會異常

 





python基礎09_檔案操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.