python檔案讀寫(基礎)

2021-09-24 14:35:42 字數 2645 閱讀 6047

1.開啟檔案

讀寫檔案是常見的io操作,python內建了讀寫檔案的函式,方便了檔案的io操作。

檔案讀寫之前需要開啟檔案,確定檔案的讀寫模式。open函式用來開啟檔案,語法如下:

open(name, [mode, [buffering]])
open函式使用乙個檔名作為唯一的強制引數,然後返回乙個檔案物件。模式(mode)和緩衝區(buffering)引數都是可選的,預設模式為讀模式,預設緩衝區是無。

假設當前工作目錄下有個叫example.txt的文字檔案,其儲存路徑是』c:/temp』(或linux下的』~/temp』),那麼可以像下面這樣開啟檔案。在互動式環境的提示符">>>"下,輸入如下內容:

>>> f = open(r'c:\temp\example.txt')
如果檔案不存在,將會看到乙個類似下面的異常回溯:

traceback (most recent call last)

file 「」, line 1, in ioerror:[error 2] no such file or directory: 'c:\\example.txt'

2.檔案模式

下面主要說一下open函式中的mode引數(如下表所示),通過改變mode引數可以實現對不同檔案的不同操作。

open函式中mode引數

功能描述

『r』讀模式

『w』寫模式

『a』追加模式

『b』二進位制模式(可新增到其他模式中使用)

『+』讀/寫模式(可新增到其他模式中使用)

這裡主要提醒一下'b'引數的使用,一般處理文字檔案時,是用不到'b'引數的但是處理一些其他型別的檔案(二進位制檔案),比如*****或者影象,那麼應該在模式引數中增加'b',這在爬蟲中處理**檔案很常用。引數'rb'可以用來讀取乙個二進位制檔案。

3.檔案緩衝區

open函式中第三個可選引數buffering控制著檔案的緩衝。如果引數是0,i/o操作就是無緩衝的,直接將資料寫在硬碟上;如果引數是1,i/o操作就是有緩衝的,資料先寫到記憶體裡只有使用flush或者close函式時才會將資料更新到硬碟;如果引數為大於1的數字則代表緩衝區的大小(單位是位元組),-1(或者是任何負數)代表使用預設緩衝區的大小。

4.檔案讀取

檔案讀取主要是分為按位元組讀取和按行讀取,經常用到的方法有read()、readlines()、close()。

在">>>"輸入f = open(r'c:\temp\example.txt')後,如果成功開啟文字檔案,接下來呼叫read()方法則可以一次性將檔案內容全部讀到記憶體中,最後返回的是str型別的物件:

>>> f.read()

'人生苦短,我用python'

最後一步呼叫close(),可以關閉對檔案的引用。檔案使用完畢後必須關閉,因為使用完畢後必須關閉,因為檔案物件會占用作業系統資源,影響系統的io操作。

>>> f.close()
由於檔案操作可能會出現io異常,一旦出現io異常,後面的close()方法就不會呼叫。所以為了保證程式的健壯性,我們需要使用try…finally來實現。

try:

f = open(r'c:\temp\example.txt', 'r')

print(f.read())

finally:

if f:

f.close()

上面的**略長,python提供了一種簡單的寫法,使用with語句來替代try…finally**塊和close() 方法,如下所示:

with open(r'c:\temp\example.txt', 'r') as filereader:

for line in filereader.readlines():

print(line.strip())

5.檔案讀寫

寫檔案和讀檔案是一樣的,唯一的區別實在呼叫open方法時,傳入標識'w'或者'wb'表示寫入文字檔案或者寫入二進位制檔案,例項如下:

f = open(r'c:\temp\example.txt', 'w')

f.write('人生苦短,我用python')

f.close()

我們可以反覆呼叫write()方法寫入檔案,最後必須使用close()方法來關閉檔案。使用write()方法的時候,作業系統不是立即將資料寫入檔案中,而是先寫入記憶體中快取起來,等空閒的時候再寫入檔案中,最後使用close()方法就將資料完整的寫到檔案中了。當然也可以使用f.flush()方法,不斷將資料立即寫入檔案中,最後使用close()方法來關閉檔案。和讀檔案同樣道理,檔案操作中可能會出現io異常,所以還是推薦with語句:

with open(r'c:\temp\example.txt', 'w') as filewriter:

filewriter.write('人生苦短,我用python')

python基礎 檔案讀寫

1.讀寫方式 f open text r encoding utf 8 2.寫讀方式 f open text w encoding utf 8 3.追加方式 f open text a encoding utf 8 4.讀方式 f open text r encoding utf 8 5.寫方式 f...

python基礎 讀寫檔案

import os print os.getcwd import os os.chdir 你想要的路徑 import os os.makedirs 你想要的檔案目錄 import os print os.path.abspath demo import os print os.path.isabs ...

python基礎 檔案讀寫

open runoob.txt rw filedir r g testcase.txt fo open filedir,rb fo 檔案物件 print 操作前 fo.tell 獲取當前檔案的位置 print fo.read 2 不填引數 全部讀取,寫引數的就是讀取指定個數 print 操作後 fo...