大多數程序都須要向文件中存儲或從文件中加載數據,Python對於文件的處理也提供了內置函數和豐富的第三方庫。python
內建函數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
文件模式指文件打開的方式,是隻讀,仍是寫入,具體可參考下表。
對象
open()
和file()
函數返回的對象即爲文件對象,能夠操做文件對象來獲取文件的內容或寫入數據。如下是文件對象的一些內建方法。blog
在寫入數據時,換行符須要手動添加。接口
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'))
運行結果 中國
在沒有進行壓縮處理的狀況下,二進制格式一般是佔據磁盤空間最小,保存與加載熟讀最快的數據格式。下面介紹幾種對於二進制格式的操做方式:it
Pickle提供了從Python程序中保存數據或向Python加載數據的最方便的方式。可是Pickle無安全機制,加載不可信源的pickle多是危險的。class
以二進制模式picking數據時,必須使用「二進制模式」(wb,rb)
pickle.dump(obj, file, protocol=None,)
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']
更多文章,請關注: