python基礎之文件處理知識總結
一、open()方法
python open()方法用於打開一個文件,並返回文件對象,在對文件處理的過程中都需要用到這個函數,如果文件無法打開,會拋出OSError。
註意:使用open()方法的時候一定到保證關閉文件對象,文件裡面的內容才會被保存,關閉文件需要調用close()方法。
open()方法常用的形式是接收兩個參數:文件名(file)和模式(mode)
基本語法:
open(file,mode=’r’)
完整的語法:
open(file,mode=’r’,buffering=1,encoding=None,errors=None,newline=None,closefd=True)
參數說明:
- file: 必須的,表示某個路徑下文件名(可以是相對路徑,也可以是絕對路徑)
- mode:可選參數,文件打開的模式
- buffering: 設置緩沖
- encoding: 編碼,一般用utf8
- errors: 報錯級別
- newline:區分換行符
- closefd:傳入的file參數類型
mode表示文件打開模式,有幾種模式呢?參考如下:
- r: 以隻讀的方式打開文件。文件的指針將會放到文件的開頭。這是文件默認的打開模式
- w: 打開一個文件隻能用於寫入。如果文件存在則打開文件,並且從頭開始編輯,文件原有的內容會被清空。如果文件不存在,則會創建新的文件
- a: 打開一個文件用於在裡面追加內容。如果文件已經存在,文件指針將會放在文件的結尾。也就是新的內容會被寫道已有的內容之後。如果該文件不存在的話,創建新文件進行寫入
- r+:打開一個文件用於讀寫,文件指針將會放在文件的開頭
- a+: 打開一個文件用於讀寫,如果文件已經存在,文件指針將會放在文件的結尾,文件打開時回事追加模式,如果該文件不存在,創建新的文件用於讀寫
- w+: 打開一個文件用於讀寫。如果該文件已經存在,則打開已經存在文件,並且從頭開始編輯,即原有的內容會被刪除。如果該文件不存在,則創建新文件
- b: 二進制文件
- rb:以二進制格式打開一個文件用於隻讀。文件指針將會放在文件的開頭。這是默認的模式,一般用於非文本文件,如圖片,視頻等
- wb: 以二進制格式打開一個文件隻用於寫入。如果該文件已經存在則打開文件,並從文件的開頭開始編輯,即原有的內容會被刪除,如果該文件不存在,創建新文件。一般用於非文本文件,如圖片,視頻等
- ab:以二進制格式打開一個文件用於追加,如果該文件已經存在,文件指針將會放在文件的結尾,也就是說,新的內容將會被寫道已有的內容之後,如果該文件不存在,則創建新的文件並寫入
- ab+:以二進制格式打開一個文件用於追加,如果該文件已經存在,文件指針將會放在文件的結尾,如果該文件不存在,創建新的文件用於讀寫
例1:以w模式打開文件
f = open('myfile.txt', 'w') f.write('hello,world!') f.close() ##輸出結果 在當前路徑下成一個myfile.txt文件,並且把'hello world'寫到該文件 myfile.txt內容如下: hello,world!
例2: 以a模式打開文件
f=open('myfile.txt','a') f.write('\ngood lucky') f.close() ##輸出結果: 會在文件末尾追加內容,不會覆蓋原來的內容 myfile.txt內容如下: hello,world! good,lucky!
例3: 再以w模式打開文件,會把原來內容覆蓋掉
f = open('myfile.txt', 'w') f.write('welcome!') f.close() ##輸出內容: myfile.txt內容如下: welcome!
例4: 以r的模式讀文件
f = open('myfile.txt', 'r') #以r模式讀文件,再往裡面write會報錯 f.write('\nhello!') f.close() ## 輸出內容: f.write('\nhello!') io.UnsupportedOperation: not writable
例5: 以r+的模式讀文件
f = open('myfile.txt', 'r+') f.write('\nhello!') f.close() ##輸出結果 r+:打開一個文件用於讀寫,文件指針將會放在文件的開頭 myfile.txt內容: 1--------------> 此處表示空行 2hello!
例6: 以w+模式寫文件
f = open('myfile.txt', 'w+') f.write('love!') f.close() ##輸出結果: 如果該文件已經存在,則打開已經存在文件,並且從頭開始編輯,即原有的內容會被刪除。如果該文件不存在,則創建新文件。 myfile.txt內容: love!
二、read()方法
讀取文件中的所有內容,讀取之後光標移動到文件末尾。 必須以r或r+模式,才可以使用read()。
例7: 以w+模式寫文件,再以r+模式來讀取文件內容
f = open('myfile.txt', 'w+') f.write('hello,world!\ngood,lucky!!') f.close() ##輸出結果: w+ 如果該文件已經存在,則打開已經存在文件,並且從頭開始編輯,即原有的內容會被刪除。如果該文件不存在,則創建新文件。 myfile.txt內容: hello,world! good,lucky!!
f = open('myfile.txt', 'r+') # print(f.read()) ##輸出結果: hello,world! good,lucky!!
例8:以r+模式寫文件,再來讀取文件
f = open('myfile.txt', 'r+') #以r+的模式,會將文件指針放在開頭,然後將指定字符替換掉文件中原來的字符 f.write('\nwelcom') print(f.read()) ##輸出結果: rld! good,lucky!! #myfile.txt內容如下: 1----------->空行 2welcomrld! 3good,lucky!!
三、readlines()方法
readlines()一行行讀文件
例9:
f = open('myfile.txt', 'r+') print(f.readline()) print(f.readline()) print(f.readline()) ##輸出結果 welcomrld! good,lucky!!
readlines()
一行行讀取文件內容,然後存放在列表中,可以讀取所有行的內容,每行的內容都作為列表中的一個元素存在列表裡,並且返回一個列表。 這個列表可以使用for..in 結構進行處理。 如果碰到EOF結束符,則返回空字符。
例10:
f = open('myfile.txt', 'r') print(f.readlines()) ##輸出內容: ['\n', 'welcomrld!\n', 'good,lucky!!'] f = open('myfile.txt', 'r') for i in f.readlines(): i = i.strip() # 去掉空格,如\n換行符 print(i) ##輸出內容: ----------->空行 welcomrld! good,lucky!!
四、seek()方法
seek() 用於移動文件讀取指針到指定位置
語法如下:f.seek(offset,[,whence]) offset--開始的偏移量,也就是代表需要移動偏移的字節數,如果是負數,表示從倒數第幾位開始 whence--可選參數,默認是0。給offset定義一個參數,表示從哪個位置開始偏移;0代表從文件開頭算起;1代表從當前位置開始算起;2代表從文件末尾算起。 如果操作成功,則返回新的文件位置;如果操作失敗,返回-1
例11:
f = open('workfile.txt', 'wb+') print(f.write(b'0123456789abcde')) f.seek(5) print(f.read(1)) f.seek(-3,2) print(f.read(1)) ##輸出結果: 15 b'5' b'c' workfile.txt內容如下: 0123456789abcde
例12:
f = open('myfile.txt', 'r') print('filename is :',f.name) line=f.readline().strip() ##去掉\n print('第一次讀取的數據是%s' % (line)) f.seek(0, 0) ##第一個0表示偏移量為0,第二個0表示從文件頭開始偏移 line=f.readline().strip() print('第二次讀取的數據是%s' % (line)) ##輸出內容: filename is : myfile.txt 第一次讀取的數據是good,lucky!! 第二次讀取的數據是good,lucky!! myfile.txt內容如下: good,lucky!!
##去掉 f.seek(0, 0),運行結果如下: f = open('myfile.txt', 'r') print('filename is :',f.name) line=f.readline().strip() print('第一次讀取的數據是%s' % (line)) line=f.readline().strip() print('第二次讀取的數據是%s' % (line)) ##運行結果如下: filename is : myfile.txt 第一次讀取的數據是good,lucky!! 第二次讀取的數據是
五、tell()函數
返回文件的當前位置
參考: https://www.runoob.com/python/file-tell.html
f = open('myfile.txt', 'r+') print('filename is :', f.name) line=f.readline() print('讀取的數據是%s' % (line)) line1=f.readline() print('讀取的數據是%s' % (line1)) pos=f.tell() print('current position is %d:' % (pos) ) f.close() ##輸出結果 filename is : myfile.txt 讀取的數據是good,lucky!! 讀取的數據是 current position is 12: myfile.txt內容如下: good,lucky!! ##輸出結果 filename is : myfile.txt 讀取的數據是good,lucky!! 讀取的數據是g current position is 15: myfile.txt內容如下: good,lucky!! g
到此這篇關於python基礎之文件處理知識總結的文章就介紹到這瞭,更多相關python文件處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!