.npy文件_python——文件读写
一:Python中讀寫文件的方法
1.open()函數
open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)
- file : 是一個 path-like object,表示將要打開的文件的路徑,可以是絕對路徑也可以是相對路徑,也可以是要被封裝的整數類型文件描述符。如果是文件描述符,它會隨著返回文件對象關閉而關閉,除非 closefd 被設為 False 。
- mode:文件打開的模式
'r':讀取文件(默認)
'w':向文件寫入,并先截斷文件
'x' 排它性創建 一個文件,如果文件已經存在則失敗
'a':在文件末尾追加寫入
'b':二進制模式
't':文本模式(默認)
'+':可讀也可以寫
- buffering
buffering 是一個可選的整數,用于設置緩沖策略。
- 二進制文件以固定大小的塊進行緩沖;使用啟發式方法選擇緩沖區的大小,嘗試確定底層設備的“塊大小”或使用 io.DEFAULT_BUFFER_SIZE。在許多系統上,緩沖區的長度通常為4096或8192字節。
- “交互式”文本文件( isatty() 返回 True 的文件)使用行緩沖。其他文本文件和二進制文件一樣。
- encoding
encoding 是用于解碼或編碼文件的編碼的名稱。僅僅在文本模式下使用。默認編碼是依賴于平臺的(不管 locale.getpreferredencoding() 返回何值)。
可以使用任何Python支持的 text encoding 。有關支持的編碼列表,請參閱 codecs 模塊。
例如:
f=open('/Users/michael/notfound.txt', 'r') f.read() f.close()2. with 關鍵字
在處理文件對象時,最好使用 with 關鍵字。
優點:
1.當子句體結束后文件會正確關閉,即使在某個時刻引發了異常也能關閉。
2.with 相比等效的 try-finally 代碼塊要簡短得多:
with open('workfile') as f: read_data = f.read() f.closed3.文件對象的方法
f.read(size)
調用f.read(size)讀取文件內容,在文本模式下,它會讀取一些數據并將其作為字符串返回,在二進制模式下,將數據作為字節串對象返回。
size是一個可選的數值參數。
- 當size被省略或者為負數時,將讀取并返回整個文件的內容;
如果文件的大小是你的機器內存的兩倍就會出現問題。
- 當取其他值時,將讀取并返回至多size個字符(在文本模式下)或size個字節(在二進制模式下)。
- 如果已到達文件末尾,f.read()將返回一個空字符串 ('')。
f.readline()
讀取文件的一行。如果到達文件的末尾就返回一個空的字符串。如果讀取一個空行,就使用'n'表示,即該字符串只包含一個換行符。
>>> f.readline() 'This is the first line of the file.n' >>> f.readline() 'Second line of the filen' >>> f.readline() ''如果要逐行讀取文件,也可以一下方法:
>>> for line in f: ... print(line, end='') ... This is the first line of the file. Second line of the filef.write(string)
會把 string 的內容寫入到文件中,并返回寫入的字符數。:
>>> f.write('This is a testn') 15在寫入其他類型的對象之前,在文本模式下,需要先把它們轉化為字符串,在二進制模式下,需要先把它們轉化為字節對象
>>> value = ('the answer', 42) >>> s = str(value) # convert the tuple to string >>> f.write(s) 18讀寫2進制文件(圖片)
>>> f= open("./440.jpeg",'rb')>>> a=f.read() >>> len(a) 11024>>> f2=open('./person.jpeg','wb') >>> f2.write(a) 11024f.tell()
f.tell() 返回一個整數,給出文件對象在文件中的當前位置,在二進制模式下為從文件開始的字節數,以及文本模式下從文件開始的字符數。
f.seek(offset, whence)
要改變文件對象的位置,請使用 f.seek(offset, whence)。 通過向一個參考點添加 offset 來計算位置;參考點由 whence 參數指定。
- whence 的 0 值表示從文件開頭起算,
- 1 表示使用當前文件位置,
- 2 表示使用文件末尾作為參考點。
- whence 如果省略則默認值為 0,即使用文件開頭作為參考點。
注意:在文本文件中,只允許相對于文件開頭搜索
2進制文件
>>> f = open('workfile', 'rb+') >>> f.write(b'0123456789abcdef') 16 >>> f.seek(5) # Go to the 6th byte in the file 5 >>> f.read(1) b'5' >>> f.seek(-3, 2) # Go to the 3rd byte before the end 13 >>> f.read(1) b'd'字符文件
>>> f.write("this is a txtn") 14 #剛寫完文件所以在最后一位 >>> f.tell() 15 #讀一個字節,為空字符串 >>> f.read(1) '' #設置文件指針到位置0>>> f.seek(0) 0>>> f.tell() 0 #讀一個字符 >>> f.read(1) 't' >>> f.read(2) 'hi' >>> f.tell() 3 >>> f.read() 's is a txtn' >>> f.tell() 15二:numpy中讀寫文件的方法
NumPy二進制文件(NPY,NPZ)
在python中有兩種二進制文件:npy和npz文件,npy文件保存一個array,npz保存多個array,
并且可以指定關鍵字,默認的關鍵字是0,1,2.....
npy文件:
>>> np.save('/tmp/123', np.array([[1, 2, 3], [4, 5, 6]])) >>> np.load('/tmp/123.npy') array([[1, 2, 3],[4, 5, 6]])npz文件:
>>> a=np.array([[1, 2, 3], [4, 5, 6]]) >>> b=np.array([1, 2]) >>> np.savez('/tmp/123.npz', a=a, b=b) >>> data = np.load('/tmp/123.npz') >>> data['a']array([[1, 2, 3],[4, 5, 6]]) >>> data['b'] array([1, 2]) >>> data.close()總結
以上是生活随笔為你收集整理的.npy文件_python——文件读写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 角色管理_MySQL 8 用
- 下一篇: Zookeeper 使用