1. 程式人生 > 程式設計 >python檔案讀寫程式碼例項

python檔案讀寫程式碼例項

實驗室導師又有任務,從一個.dat檔案中讀取波形資料,通過一個自編碼網路進行異常檢測。可是對我這種小白來說真的艱難。從最基礎的檔案讀寫開始吧。

先說資料,是一個int16型的陣列。說是陣列,但是讀取也並不簡單。眾所周知,資料在計算機中是用二進位制的形式儲存的。int16型有符號整數。16位,16bit,也就是兩個位元組。那麼自然而然的想到,讀取兩個位元組(bytes)的資料(也就是16bit),然後把它轉化成int16的整型(即十進位制整型)。資料就變得可以處理了。

先放一個不同位數的整型資料範圍吧,經常會用的到。

  • Int8 //等於byte,-128 127
  • Int16 //等於short,佔2個位元組. -32768 32767
  • Int32 //等於int,佔4個位元組. -2147483648 2147483647
  • Int64 //等於long,佔8個位元組. -9223372036854775808 9223372036854775807

這裡補充一個小知識點,python3中的int型別是動態長度的,是長整型,理論支援無限大的數字。對一個int型例項執行內建的__sizeof__方法,可以檢視佔用的位元組數。其中0佔了24個位元組,其他數字一般佔用28個位元組。

讀檔案:文字檔案

>>> f = open('/Users/michael/test.txt','r')

我們知道,在python3中,字串型別(str)包含的是Unicode characters。這種特性使得我們在python3中可以定義包含Unicode character的字串,並甚至可以在變數識別符號中使用非ASCII字元。

那麼以上的程式碼做的是這樣一件事:定義一個檔案物件,檔案物件標明將用讀字元的手段來讀取這個檔案中的內容。

>>> f.read()
'Hello,world!'

上面的程式碼一次性讀取檔案的全部內容,把內容讀到記憶體,用str物件表示。

此外還可以呼叫read(size),每次讀取size個位元組的內容。或者呼叫readline(),每次讀取一行內容。將每一行的內容存在str裡,並返回一個str的列表。

為了保證檔案被關閉,可以使用with關鍵詞:

with open('/path/to/file','r') as f:
  print(f.read()

讀取非UTF-8編碼的文字檔案,需要給open()函式傳入encoding引數,例如,讀取GBK編碼的檔案:

>>> f = open('/Users/michael/gbk.txt','r',encoding='gbk')
>>> f.read()
'測試'

二進位制檔案:

如果要讀取二進位制檔案,用rb模式開啟檔案即可。

>>> f = open('/Users/michael/test.jpg','rb')
>>> f.read()
b'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六進位制表示的位元組

寫檔案:

寫檔案和讀檔案是一樣的,呼叫open()函式時,傳入'w'或者'wb'表示寫文字檔案或者寫二進位制檔案。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。