1. 程式人生 > >Python基礎(檔案操作)

Python基礎(檔案操作)

檔案讀取:

 1 #檔案讀取方式一
 2 f=open("a.txt","r+",encoding="utf8")
 3 data=f.read()
 4 print(data)
 5 f.close()
 6 
 7 #檔案讀取方式二
 8 with open("a.txt","r+",encoding="utf8") as f:
 9     data=f.read()
10     print(data)

 

 

檔案寫入:

1 #檔案寫入方式一
2 f=open("b.txt","w",encoding="utf8")
3 f.write("
今天天氣很好!") 4 f.close() 5 6 #檔案寫入方式二 7 with open("a.txt","r+",encoding="utf8") as f: 8 data=f.write() 9 print(data)

標註**:使用with open() as f 方式讀資料時簡化了f.close()的步驟

 

 

 

檔案重新整理(flush):

1 with open("c.txt","r+",encoding="utf8") as f:
2     f.write("今夜難以入睡!")
3     f.flush()#
將寫在記憶體中的內容重新整理到硬碟中

 

 

 

檔案tell方法:

  描述:此方法返回該檔案中讀出的檔案/寫指標的當前位置。

1 with open("d.txt","r+",encoding="utf8") as f:
2     data=f.readline()
3     print(data)
4     print(f.tell()) #顯示當前游標所在的位置

 

 

 

檔案seek方法:

  描述:seek()用於移動檔案讀取指標到指定位置。

  格式:file.seek(offset,whence)

    offset:開始的偏移量,也就是代表需要移動偏移的位元組數

    whence:給offset引數一個定義,表示要從哪個位置開始偏移;0代表從檔案開頭開始算起,1代表從當前位置開始算起,2代表從檔案末尾算起。whence值為空沒設定時會默        認為0。

 1 >>> f=open("aaa.txt","w")     #以只寫的形式開啟一個叫做aaa.txt的檔案
 2 >>> f.write("my name is liuxiang,i am come frome china")   #寫入內容
 3 >>> f.close()     #關閉檔案
 4 >>> f=open("aaa.txt","r")     #以只讀開啟檔案
 5 >>> f.read()   #讀取內容
 6 'my name is liuxiang,i am come frome china'      
 7 >>> f.seek(3,0)      #“0”代表從檔案開頭開始偏移,偏移3個單位
 8 >>> f.read(5)     #從偏移之後的指標所指的位置(即“n”)開始讀取5個字元
 9 'name '
10 >>> f.tell()     #顯示現在指標指在哪個位置(即“i”的位置)
11 >>> f.readline()       #讀取這一行剩下的內容
12 'is liuxiang,i am come frome china'     
13 
14 
15 
16 >>> f.seek(0,2)      #“2”代表從末尾算起,“0”代表偏移0個單位
17 >>> f.read()
18 ''         #因為是從末尾算起,內容已結束。所以讀取內容為空

 

 

**seek方法讀取日誌檔案最後一行:

1 #日誌檔案
2 2018/12/23   kelvin   login   登入淘寶
3 2018/12/25   Alex   buy   購買商品
4 2018/12/28   kelvin   buy   購買商品
5 2018/12/29   elvin   login   登入網站
6 2018/12/29   kelvin   nologin   退出登入
7 2018/12/31   bob   foot   逛商城
8 2019/01/01   kelvin   order   下單
1 with open("日誌檔案","rb") as f:
2     offset=-20    #定義一個偏移量用於在第一次倒序移動游標長度
3     while True:
4         f.seek(offset,2)   #第一次倒序移動游標,移動長度為20個位元組
5         data=f.readlines()  #讀取從移動後的游標到日誌結尾的每一行組成一個列表
6         if len(data)>1:    #如果取出的檔案列表行數大於1,則說明肯定取到了最後一行
7             print(data[-1].decode("utf8"))   #取出列表中的最後一行,即為日誌的最後一行
8             break
9         offset*=2     #如果取出的檔案列表小於等於1,則說明取出的最後一行日誌可能不完整,說明偏移量太小,因此擴大偏移量

 

遍歷檔案:

 1 #Author : Kelvin
 2 #Date : 2019/1/4 12:59
 3 
 4 #第一種(不推薦使用,因為會將檔案所有內容載入到記憶體)
 5 f=open("日誌檔案","r+",encoding="utf8")
 6 for i in f.readlines():
 7     print(i)
 8 
 9 #第二種(推薦使用,只會一行一行讀取,不會首先將所有檔案內容載入到記憶體中)
10 f=open("日誌檔案","r+",encoding="utf8")
11 for i in f:
12     print(i)