天天看點

open函數傳回-1_Python入門:内置函數open

open函數傳回-1_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, '', '', '', 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():關閉檔案

三、例子

  1. 讀文本文檔

f = open(r'E:AppsPyCharm 2019.3.3fileshello.txt', ' rt ')

lines = f.readlines()

for line in lines:

print(line)

f.close()

  1. 讀取圖檔

f = open(r'E:AppsPyCharm 2019.3.3filessun.jpg', 'rb')

lines = f.readlines()

for line in lines:

print(line)

f.close()

  1. 防止忘記關閉檔案

with open(r'E:AppsPyCharm 2019.3.3fileshello.txt', 'rt') as f:

lines = f.readlines()

for line in lines:

print(line)

  1. 寫檔案

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

繼續閱讀