Python入門:內建函式open

Python入門:內建函式open

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()