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, ‘’, ‘\n’, ‘\r’, and ‘\r\n’,輸入輸出有差異
讀取或輸入模式下,如果新行符為None,遇到\n,\r或\r\n統一轉換為\n作為文字輸入的換行符。當設定為空’’時,輸入什麼樣的,就保持原樣全輸入。當設定為其它相應字元時,就會判斷到相應的字元作為換行符,並保持原樣輸入到文字。
寫入或輸出模式時,如果新行符為None,那麼所有輸出文字都是採用\n作為換行符。如果設定為’’或者\n時,不作任何的替換動作。如果是其它字元,會在字元後面新增\n作為換行符。
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:\Apps\PyCharm 2019。3。3\files\hello。txt’, ‘ rt ’)
lines = f。readlines()
for line in lines:
print(line)
f。close()
讀取圖片
f = open(r‘E:\Apps\PyCharm 2019。3。3\files\sun。jpg’, ‘rb’)
lines = f。readlines()
for line in lines:
print(line)
f。close()
防止忘記關閉檔案
with open(r‘E:\Apps\PyCharm 2019。3。3\files\hello。txt’, ‘rt’) as f:
lines = f。readlines()
for line in lines:
print(line)
寫檔案
with open(r‘E:\Apps\PyCharm 2019。3。3\files\hello。txt’, ‘a’) as f:
f。write(‘\nThis is a new line。’)
f。flush()
with open(r‘E:\Apps\PyCharm 2019。3。3\files\hello。txt’, ‘a’) as f:
f。write(‘\nThis is a new line。’)
f。flush()