Python文件操做總結

1、文件操做的經常使用方法:函數

一、read():從光標位置開始讀取整個文件剩下的內容,注意是從光標位置開始,不必定是讀取整個文件。spa

#第一次讀取:
f=open('test.txt','r') print(f.read()) f.close() #自恐多情損梵行,入山又怕誤傾城.世間安得雙全法,不負如來不負卿.
 做者:倉央嘉措 #第二次讀取
f=open('test.txt','r') f.readline() print(f.read())        #做者:倉央嘉措
f.close()

二、readline和readlines的區別:指針

#readline()只讀取一行,而後光標移動到下一行
f=open('test.txt','r') print(f.readline())       #自恐多情損梵行,入山又怕誤傾城.世間安得雙全法,不負如來不負卿.
print(f.readline())     #做者:倉央嘉措
f.close() #readllines()讀取整個文件,而後把每一行當成一個元素存成一個列表。注意每一個元素後後帶有換號符
f=open('test.txt','r') print(f.readlines())   #['自恐多情損梵行,入山又怕誤傾城.世間安得雙全法,不負如來不負卿.\n', '做者:倉央嘉措\n']
f.close() #最後說明一點:readlines是把真個文件都一次性讀寫到內存中,若是文件小還好,一旦文件大了,會要命。文件大可使用下面這種方法來讀寫:
with open('test.txt','r') as f: for line in f: print(line.strip()) #這樣讀寫的好處就是一行一行讀,而且讀完就釋放,徹底不佔用內存。

 

 

 三、write,writelinescode

f.write('1111\n222\n') #針對文本模式的寫,須要本身寫換行符
f.write('1111\n222\n'.encode('utf-8')) #針對b模式的寫,須要本身寫換行符
f.writelines(['333\n','444\n']) #文件模式
f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式

 

 四、其餘方法:blog

f.readable() #文件是否可讀
f.writable() #文件是否可讀
f.closed #文件是否關閉
f.encoding #若是文件打開模式爲b,則沒有該屬性
f.flush() #馬上將文件內容從內存刷到硬盤
f.name   #文件名

 2、文件光標的移動:ip

一、read(n)當文件打開方式爲文本模式時,表明讀取n個字符,文件打開方式爲b模式時,表明讀取n個字節內存

#一、以文本模式讀取
with open('test.txt','r') as f: print(f.read(4))   #自恐多情

#二、以字節模式讀取:
with open('test.txt','rb') as f: print(f.read(4).decode('gbk'))         #自恐 #直接輸出:print(f.read()) 輸出爲 b'\xd7\xd4\xbf\xd6'

 

二、tell()  獲取當前文件指針所在的位置,沒參數。以字節方式計算返回utf-8

with open('test.txt','r') as f: print(f.read(4)) #自恐多情
    print(f.tell())   #8

 

三、seek() 做用:用於移動文件讀寫指針到指定位置。rem

#函數的原型是:file.seek(offset,whence=0)
offset是指偏移量,whence有三個值,0,1,2。0表明移動到文件開頭,1,指當前位置,2指文件末尾。 缺省則使用默認值0. #注意:使用參數1,2必須在字節模式b下打開文件!
 with open('test.txt','r') as f: print(f.read(4)) #自恐多情
    print(f.tell())   #8
    f.seek(0,0)      #返回開頭
    print(f.read(4))      #自恐多情
 with open('test.txt','rb') as f: print(f.read(4).decode('gbk')) #自恐
    f.seek(-4,1) print(f.read(4).decode('gbk'))  # 自恐
 with open('test.txt','rb') as f: f.seek(-4,2) print(f.read(4).decode('gbk'))   #嘉措

 

2、文件的修改:原型

  實際上咱們平時說得修好某個文件的某個地方,實際是本質上並非直接修改文件,而是覆蓋。文件的數據是存放於硬盤上的,於是只存在覆蓋、不存在修改這麼一說,咱們平時看到的修改文件,都是模擬出來的效果,咱們能夠用下面的代碼來模擬這過程。

import os with open('test.txt','r') as f ,open('test_1.txt','w') as f1: for line in f: line=line.replace('自恐多情損梵行,入山又怕誤傾城.世間安得雙全法,不負如來不負卿.',\ '不恐多情損梵行, 惟恐入山誤傾城.世間安得雙全法,寧負如來不負卿.') line=line.replace('倉央嘉措','喲,寫bug呢??') f1.write(line) os.remove('test.txt') os.rename('test_1.txt','test.txt')
相關文章
相關標籤/搜索