實驗室導師又有任務,從乙個.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 open('/path/to/file', 'r') as f:print(f.read())
>>> f = open('/users/michael/gbk.txt', 'r', encoding='gbk')>>> f.read()
'測試'
二進位制檔案:
如果要讀取二進位制檔案,用rb模式開啟檔案即可。
b'\xff\xd8\xff\xe1\x00\x18exif\x00\x00...' # 十六進製制表示的位元組
寫檔案:
寫檔案和讀檔案是一樣的,呼叫open()函式時,傳入'w'或者'wb'表示寫文字檔案或者寫二進位制檔案。
Python檔案讀寫
今天在看python檔案讀寫操作,發現python file name mode buffering file 函式用於建立乙個file物件,它有乙個別名叫open 可能更形象一些,它們是內建函式。來看看它的引數。它引數都是以字串的形式傳遞的。name是檔案的名字。mode 是開啟的模式,可選的值為...
python檔案讀寫
檔案讀寫模式 模式 描述 r以讀方式開啟檔案,可讀取檔案資訊。w以寫方式開啟檔案,可向檔案寫入資訊。如檔案存在,則清空該檔案,再寫入新內容 a以追加模式開啟檔案 即一開啟檔案,檔案指標自動移到檔案末尾 如果檔案不存在則建立 r 以讀寫方式開啟檔案,可對檔案進行讀和寫操作。w 消除檔案內容,然後以讀寫...
python 讀寫檔案
python讀寫檔案在文字不大的情況可以用正常的 open 然後讀入 readline行讀入 或者整體讀入 read readlines 基本知識 file open path,r 說明 第乙個引數是檔名稱,包括路徑 第二個引數是開啟的模式mode r 唯讀 預設。如果檔案不存在,則丟擲錯誤 w 只...