Python學習筆記之文件和流
打開文件:open(name[,mode[,buffering]]),返回一個文件對象,模式(mode)和緩沖(buffering)是兩個可選參數。
假設有一個名為somefile.txt的文件,存儲路徑為c:\text,打開方式如下:f = open(r‘C:\text\somefile.txt‘)
mode參數:如果open函數只帶一個文件名參數,可以獲得能讀取文件內容的文件對象,如果要進行寫操作,則必須要提供一個模式操作顯式聲明。
值 | 描述 |
‘r‘ | 讀模式 |
‘w‘ | 寫模式 |
‘a‘ | 追加模式 |
‘b‘ | 二進制模式(可添加到其他模式中使用) |
‘+‘ | 讀/寫模式(可添加到其他模式中使用) |
‘r+‘參數可以在一個文件讀寫時使用
‘rb‘參數可以讀取一個二進制文件
buffering函數:控制文件的緩沖,如果是0或者False,則I/O操作是無緩沖的(直接對硬盤進行操作),是1或者True則I/O操作針對內存,在進行flush或者close時才更新硬盤上的數據,大於1的數字代表緩沖區大小(字節),為負數表示使用默認緩沖區大小。
基本文件方法:文件或流最重要的能力是提供或接收數據。
>>> f2 = open(‘F:\Python.txt‘) >>> f2.read() ‘hello worldhi‘ >>> f3 = open(‘F:\Python.txt‘,‘a‘) >>> f3.write(‘\nPython‘) 7 >>> f3.close() >>> f2.read() ‘\nPython‘ >>> f2.close()
read方法可以指定讀取個數。
使用writelines(list)對文件進行修改:
f = open(‘F:\Python.txt‘) lines = f.readlines() f.close() lines[1] = ‘bye bye‘ f2 = open(‘F:\Python.txt‘,‘w‘) f2.writelines(lines)
關閉文件:
- 使用try/finally語句,在finally語句中調用close方法;
- with語句,打開文件並將其賦值到變量上,文件在語句結束時自動關閉,即使是由於異常引起的結束也是如此。
with open(‘file.txt‘) as file1:
do_something(somefile)
上下文管理器:是一種支持__exit__和__enter__兩個方法的對象,__enter__方法不帶參數,在進入with語句塊的時候被調用;__exit__方法有三個參數:異常類型、異常對象和異常回溯,在離開方法(帶有通過參數處理的、可引發的異常)時這個函數被調用,如果__exit__返回false,那麽所有異常都不會被處理。
文件可以用作上下文處理器,__exit__關閉文件,__enter__返回文件對象本身。
文件對象是一個可叠代對象,對於大文件的讀取,可以使用如下方法:
f = open(‘F:\Python.txt‘) for x in f: print(x) f.close()
或者直接對文件進行叠代,不使用變量存儲文件對象:
for line in open(‘F:\Python.txt‘): print(line) line1,line2 = open(‘F:\Python.txt‘) print(line1) print(line2) lines = list(open(‘F:\Python.txt‘)) print(lines)
Python學習筆記之文件和流