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'表示寫文本文件或者寫二進制文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM