Python自學筆記-第7章文件處理(上)

大多數程序都須要向文件中存儲或從文件中加載數據,Python對於文件的處理也提供了內置函數和豐富的第三方庫。python

1.內建函數

內建函數open() file()提供了初始化輸入/輸出(I/O)操做的通用接口。其基本語法以下:安全

file_object = open(file_name,access_mode='r',buffering=-1)

函數

file_object = file(file_name,access_mode='r',buffering=-1)

參數說明:code

  • filename 包含要打開的文件名字的字符串,能夠是相對路徑或絕對路徑。
  • access_mode 也是一個字符串,表明文件打開的模式。文件模式有以下表
  • buffering 用於指示訪問文件所採用的緩衝方式 0 表示不緩衝,1表示只緩衝一行數據,任何大於1的值表明使用給定值做爲緩衝區大小。不提供該參數或者給定負值表明使用系統默認的緩衝機制。通常狀況下使用系統默認方式便可

1.1.文件模式

文件模式指文件打開的方式,是隻讀,仍是寫入,具體可參考下表。
對象

1.2.文件對象

open() file()函數返回的對象即爲文件對象,能夠操做文件對象來獲取文件的內容或寫入數據。如下是文件對象的一些內建方法。blog

1.2.1.內建方法

寫入數據

在寫入數據時,換行符須要手動添加。接口

with open('aaa.txt','w') as f:
    f.write('aaa\r')
    f.write('bbb\r')

讀入數據

with open('aaa.txt','r') as f:
    for line in f.readlines():
        print(line)
運行結果
aaa

bbb
with open('aaa.txt','r') as f:
    for line in f:
        print(line)
運行結果
aaa

bbb

本例使用上下文管理器,不然須要手動關閉鏈接file.close()字符串

二進制模式

with open('bbb.txt','wb') as f:
    f.write(bytes('中國\n',encoding='GBK'))
with open('bbb.txt','rb') as f:
    print(f.readlines()[0].decode('GBK'))
運行結果
中國

1.2.2.內建屬性

2.二進制數據

在沒有進行壓縮處理的狀況下,二進制格式一般是佔據磁盤空間最小,保存與加載熟讀最快的數據格式。下面介紹幾種對於二進制格式的操做方式:it

2.1.Pickle

Pickle提供了從Python程序中保存數據或向Python加載數據的最方便的方式。可是Pickle無安全機制,加載不可信源的pickle多是危險的。class

以二進制模式picking數據時,必須使用「二進制模式」(wb,rb)

pickle.dump(obj, file, protocol=None,)

  • 必填參數obj表示將要封裝的對象
  • 必填參數file表示obj要寫入的文件對象,file必須以二進制可寫模式打開,即「wb」
  • 可選參數protocol表示告知pickler使用的協議,支持的協議有0,1,2,3,默認的協議是添加在Python 3中的協議3。 
import pickle
with open('ccc.txt','wb') as f:
    st = {'a':'1','b':'2'}
    data=pickle.dump(st,f,pickle.HIGHEST_PROTOCOL)
    print(data)
運行結果
None

寫入後數據爲:

pickle.dumps(obj)

以字節對象形式返回封裝的對象,不須要寫入文件中

import pickle
data = ['aa', 'bb', 'cc']  
# dumps 將數據經過特殊的形式轉換爲只有python語言認識的字符串
p_str = pickle.dumps(data)
print(p_str)
運行結果    
      b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.'

pickle.load(file,*,fix_imports=True, encoding="ASCII", errors="strict")

必填參數file必須以二進制可讀模式打開,即「rb」,其餘都爲可選參數

with open('ccc.txt','rb') as f:
    data = pickle.load(f)
    print(data)
運行結果    
{'a': '1', 'b': '2'}

pickle.loads(bytes_object)

data = pickle.loads(p_str)
print(data)
運行結果    
['aa', 'bb', 'cc']

更多文章,請關注:

相關文章
相關標籤/搜索