python文件操作:r、w、a、r+、w+、a+和b模式

對文件操作的基本步驟

f=open('a.txt','r',encoding='utf-8')
data=f.read()
print(data)
f.close()

文件的打開和關閉使用open()、close()函數,文件剛打開時光標在最前面。

open()函數的第一個參數爲要打開的文件名,默認路徑爲這個腳本所在路徑;第二個參數爲打開模式,第三個參數爲編碼格式。

文件的基本打開模式有r、w、a、r+、w+、a+,如果省略打開模式默認爲r只讀,各打開模式的區別如下:
在這裏插入圖片描述

f.readable()  判斷文件是否可讀,返回True或False

f.readline()  每次讀取一行,當讀取到一行的末尾時再執行readline讀取內容爲空

f.readlines()  將文件所有內容讀出放到一個列表,每行爲一個元素,類型爲字符串,例如['hello\n', 'hi\n', 'nice\n']

如果在文件打開時,指定newline=‘’,則換行的結果顯示爲/r/n(windows平臺的換行符爲\r\n,unix和linux平臺的換行符爲\n)

f1=open('b.txt','r',encoding='utf-8')
f2=open('b.txt','r',encoding='utf-8',newline='')
print(f1.readlines())
print(f2.readlines())
f1.close()
f2.close()
#執行結果爲
['123\n', 'abc']
['123\r\n', 'abc']

f.writable() 判斷文件是否可寫,返回True或False

f.write() 將所有內容作爲一個整體寫入文件

f.writelines() 將列表內容按行寫入文件,f.writelines(['hello\n', 'hi\n', 'nice\n'])

f.closed 判斷文件是否關閉,返回True或False,注意該方法沒有括號

f.encoding 返回文件打開時候的編碼,注意該方法沒有括號

f.flush() 將內容中的內容刷到硬盤

直接使用open函數打開文件時,還需要手動關閉close文件,否則文件會一直佔據內存。使用with open() as f打開文件則無需手動關閉,使用例子如下。

def file_operation():
    with open('a.txt','a+',encoding='utf-8') as f:
      f.write('hello')
    print(f.read())

文件默認是以t即文本模式進行處理,

b爲二進制模式,可以處理除了文本之外的圖片、音頻、視頻等格式的文件,還可以跨平臺處理

f=open('test11.py','rb')------以b的方式打開文件時不能指定編碼

data=f.read()

print(data.decode('utf-8'))------讀取之後以utf-8格式對二進制進行解碼

 

f=open('test22.py','wb')

f.write(bytes('1111\n',encoding='utf-8'))--------bytes函數將指定內容以uft-8格式編碼爲二進制
#學習中遇到問題沒人解答?小編創建了一個Python學習交流羣:725638078
f.write('22222\n'.encode('utf-8'))----------encode直接將指定內容以uft-8格式編碼爲二進制

文件內光標的移動

除去read( )是以字符進行讀取的,其他光標的移動都是以字節爲單位進行的,如seek、tell、truncate

read(3)表示讀取3個字符

seek(3)表示光標向後移動3個字節,默認是從光標在文件最前面開始,也即seek(3,0)

光標的相對移動需要在打開時指定b模式,seek的第二個參數表示移動方式,0爲默認方式,即從文件最開頭移動,1是相對上一次移動,2是從文件末尾移動

seek(3,1) 表示從光標上一次所在的位置向後移動3個字節

seek(-3,2)表示從文件末尾開始向前移動

truncate(3)表示截取文件前3個字節,必須以可寫的方式打開,w和w+除外

tell( )表示顯示當前光標所在的字節

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章