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打開如果文件存在則在原文件內容上追加寫,不存在的話先創建

 

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.closed  判斷文件是否關閉,返回True或False

f.write()  將內容寫入文件

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

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格式編碼為二進制

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( )表示顯示當前光標所在的字節

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM