open函數用來打開檔案并且傳回流stream
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True
一、主要參數:
- file:所需打開的檔案
- mode:打開模式,預設'rt'讀文本模式,可選r讀,w寫,x建立或若檔案存在則寫,a附加,b二進制,t文本,+更新磁盤檔案(讀并寫),U通用換行(已棄用)
- buffering:緩沖,預設None,系統指定緩沖方式;0關閉緩沖(僅binary mode二進制模式可用);1打開緩沖,>1的數值為緩沖區大小
- encoding:編碼,預設None,依賴平台編碼方式,僅text mode文本模式時可設定使用,可用encoding可檢視codecs module
- errors:編碼錯誤處理方式,binary mode時不要設定該參數,strict時如果有編碼錯誤會抛出ValueError異常,ignor時會忽略錯誤
- newline:換行方式,可設定為 None, '', '', '', and '',輸入輸出有差異
讀取或輸入模式下,如果新行符為None,遇到,或統一轉換為作為文本輸入的換行符。當設定為空’’時,輸入什麼樣的,就保持原樣全輸入。當設定為其它相應字元時,就會判斷到相應的字元作為換行符,并保持原樣輸入到文本。
寫入或輸出模式時,如果新行符為None,那麼所有輸出文本都是采用作為換行符。如果設定為’’或者時,不作任何的替換動作。如果是其它字元,會在字元後面添加作為換行符。
- closefd:如果closefd為False,底層檔案描述器仍然是打開,設定為True底層檔案描述器同時也會關閉
二、檔案對象方法
- read(n):n未指定則傳回整個檔案,如果檔案大小>2倍記憶體則出現問題,read()讀到檔案末尾是傳回空字元""
- radline():按行讀取資料,傳回一行資料
- readlines(n):按行讀取資料,傳回n行的資料清單,n未指定則傳回全部行
- for line in f:通過疊代器通路
- write(“string”):寫入字元串資料,如果資料格式不是字元串,需要轉為字元串格式
- tell():傳回一個整數,表示目前檔案指針的位置,即到檔案起始位置的比特數
- seek(offset,[start]):移動檔案指針,offset為偏移量,機關為bit,可正可負,start為起始位置,0表示檔案開始,1目前位置,2檔案末尾
- close():關閉檔案
三、例子
- 讀文本文檔
f = open(r'E:AppsPyCharm 2019.3.3fileshello.txt', ' rt ')
lines = f.readlines()
for line in lines:
print(line)
f.close()
- 讀取圖檔
f = open(r'E:AppsPyCharm 2019.3.3filessun.jpg', 'rb')
lines = f.readlines()
for line in lines:
print(line)
f.close()
- 防止忘記關閉檔案
with open(r'E:AppsPyCharm 2019.3.3fileshello.txt', 'rt') as f:
lines = f.readlines()
for line in lines:
print(line)
- 寫檔案
with open(r'E:AppsPyCharm 2019.3.3fileshello.txt', 'a') as f:
f.write('This is a new line.')
f.flush()
with open(r'E:AppsPyCharm 2019.3.3fileshello.txt', 'a') as f:
f.write('This is a new line.')
f.flush()