python學習(十一) 文件和流
11.1 打開文件
>>> f = open(r‘c:\text\somefile.txt‘), 第一個參數是文件名,必須有;第二個是模式;第三個參數是緩沖。
11.1.1 文件模式
如果open函數只帶一個文件名參數,那麽我們可以獲得能讀取文件內容的文件對象。如果要向文件內寫入內容,則必須提供一個模式參數
‘r‘ -----讀模式(制定讀模式與不制定的效果是一樣的)
‘w‘-----寫模式
‘a‘-----追加模式
‘b‘-----二進制模式(python假定處理的都是文本文件(包含字符),但是如果是其他類型的文件(二進制),比如聲音或者圖像,那麽要指定 b模式)
(為什麽使用二進制模式: \n 和 \r\n的轉換,但是如果是二進制文件就不會轉。)
‘+‘-----讀寫模式
11.1.2 緩沖
如果是0(False),I/O就是無緩沖的,所有的讀寫操作都是直接針對硬盤;
如果是1(True),就是有緩沖的,使用內存代替硬盤,速度快,只有在flush或close的時候才會更新硬盤上的數據。
大於1,代表緩沖區大小(單位是字節),-1代表使用默認緩沖區大小。
11.2 基本的文件方法
11.2.1 讀和寫
>>> f = open(r‘c:\text\somefile.txt‘,‘w‘) // 寫 >>> f.write(‘abcd \n ef \r\n gh‘) 15 >>> f.flush() // 調用close()或flush()才能真正寫進去
>>> f=open(r‘c:\text\somefile.txt‘, ‘r‘) // 讀
>>> f.read(4) // 只讀4個
‘abcd‘
>>> f.read() // 讀所有的
‘ \n ef \n\n gh‘
11.2.2 管式輸出
前一個命令的輸出是下一個命令的輸入,用符號“|”連接
11.2.3 讀寫行
>>> f.readline() ‘‘ >>> f.seek(0) // 定位到文本開始 0 >>> f.readline() // 讀取一個行 ‘abcd \n‘ >>> f.readlines() // 讀取所有的行,返回列表 [‘ ef \n‘, ‘\n‘, ‘ gh‘]
f.writelines([‘afa‘,‘gdf‘,‘gfdg‘]) // 按行的方式寫入列表
11.2.4 關閉文件
對文件操作應該,在finally中調用 f.close(), 這樣保證出異常了也可以正確關閉文件。
11.2.5 使用基本文件方法
11.3 對文件內容進行叠代
11.3.1 按字節處理
f = open(filename) char = f.read(1) while char: process(char) char = f.read(1) f.close()
11.3.2 按行操作
readline()
11.3.3 讀取所有內容
read() : 不帶參數的read方法可以讀取所有行。
readlines(): 讀取所有行。
11.3.4 使用fileinput實現懶惰行叠代
readline() 每次只讀一行。
import fileimput for line in fileinput.input(filename): process(line)
11.3.5 文件叠代器
f = open(filename) for line in f: processs(line) f.close()
python學習(十一) 文件和流