1.打開和關閉文件(open(),file(),close())
有兩種內建函數可以獲取文件對象:open和file。他們的用法完全一樣。下面只以open()為例子講解。獲取一個文件對象(打開文件)的語法如下:
filename不用說你也應該知道是你要打開文件的路徑。
access_mode用來標識文件打開的模式,默認為r(只讀)。
常用的模式如下表所示:
| 文件模式 | 解釋 |
| r | 以只讀方式打開 |
| w | 以寫方式打開,文件不為空時清空文件;文件不存在時新建文件。 |
| a | 追加模式,沒有則創建 |
| r+,w+,a+ | 以讀寫模式打開,參見w,a |
第三個參數不經常用到,標識訪問文件的緩沖方式,0代表不緩沖,1代表緩
沖一行,-1代表使用系統默認緩沖方式。只要使用系統默認就好。
一些例子:
使用完文件后,一定要記得關閉文件,操作如下:
2.文件讀入
2.1.file.read(size = -1)
讀取從當前文件游標起size個字節的文件內容。如果size=-1,則讀取所有剩余字節。
2.2.file.readlines(size=-1)
從文件中讀取并返回一行(包括行結束符),或返回最大size個字符
2.3.file.readlines(sizhint=0)
讀取文件所有的行,并作為一個列表返回(包括行結束符),如果sizhint>0則返回總和大約sizhint字節的行(具體由緩沖區大小決定)。
輸出省略。
3.文件輸出
3.1.file.write(str)
向文件中寫入指定的字符串。
3.2.file.write(seq)
向文件寫入字符串序列seq。seq是任何返回字符串的可迭代對象。
注意,文件寫入的時候,不會自動加上換行符,必須手動加上。
4.文件移動
學過C語言的同學,一定對fseek()函數不陌生,在Python中,seek()方法是fseek()的替代者。
seek(offset,whence=0)
方法可以將文件游標移動到文件的任意位置。其中offset代表需要移動的偏移字節數,whence表示要從哪個位置開始偏移:
0代表從文件開頭開始算起,
1代表從當前位置開始算起,
2代表從文件末尾算起。
那我們如何知道當前文件游標在哪里呢?別擔心,這里有個tell()方法可以返回當前文件游標的位置。
5.文件迭代
在Python中,文件不僅僅是一個對象,而且是一個可迭代對象!我們可以利用如下迭代方式,輕松的訪問和處理文件內容,而不必全部讀出(readlines)后再迭代(性能上差了很多哦!)
例如:
6.os、os.path與文件
os和os.path中提供了一些跟文件有關的接口,下面介紹一些常用的接口。其他接口可以自己查閱相關文檔。
注意:以下函數傳入的參數都是字符串形式的文件名字,文件名可由文件對象的name屬性獲得。
| 函數 | 描述 |
| os.path.basename() | 去掉目錄路徑,返回文件名 |
| os.path.dirname() | 去掉文件名,返回目錄路徑 |
| os.path.getatime() os.path.getctime() os.path.getmtime() os.path.size() | 返回文件的atime,ctime,mtime和大小 |
| os.path.exists() | 該文件或目錄是否存在 |
| os.path.abs() | 指定路徑是否為絕對路徑 |
| os.path.isdir() | 路徑是否存在且為目錄 |
| os.path.isfile() | 路徑是否存在且為文件。 |
| os.path.islink() | 指定路徑是否存在且為一個符號鏈接 |
|
新聞熱點
疑難解答
圖片精選