如何使用 Python 將二進位制資料寫入檔案?


在 Python 中,將二進位制資料寫入檔案是一個常見且常規的任務,當您需要儲存非文字資料(如影像、音訊檔案或序列化物件)時,就會用到它。在本文中,我們將探討使用 Python 將二進位制資料寫入檔案的各種方法,並提供程式碼示例以及全面的解釋,幫助您掌握這一概念。

要使用 Python 將二進位制資料寫入檔案,您可以按照以下步驟操作

以二進位制模式開啟檔案

首先,您應該使用 open() 函式以二進位制模式開啟檔案。開啟檔案時,模式宣告為 'wb',表示以二進位制寫入模式開啟。此模式確保您寫入檔案的資料將被視為二進位制資料。

file_path = "path/to/file.bin"

with open(file_path, "wb") as file:
    # Write binary data to the file
    # ...

在上面的程式碼中,file_path 指向您要寫入的檔案的路徑。'with 語句' 用於確保在寫入後正確關閉檔案。

將二進位制資料寫入檔案

以二進位制模式開啟檔案後,您可以使用 write() 方法將二進位制資料寫入檔案。write() 方法接受一個 bytes 物件作為引數,該物件包含您要寫入的二進位制資料。

file_path = "path/to/file.bin"

with open(file_path, "wb") as file:
    binary_data = b"\x48\x65\x6C\x6C\x6F"  
# Example binary data
    file.write(binary_data)

在上面給出的程式碼中,binary_data 是一個 bytes 物件,包含您希望寫入的二進位制資料。在這裡,我們將字串 "Hello" 的 ASCII 表示形式寫入檔案。

關閉檔案

寫入二進位制資料完成後,務必關閉檔案以釋放系統資源。'with 語句' 會為您處理檔案關閉,但如果您未使用它,請確保在檔案物件上呼叫 close() 方法。

file_path = "path/to/file.bin"
file = open(file_path, "wb")

# Write binary data to the file
# ...

file.close()

在上面的程式碼中,file.close() 用於在寫入二進位制資料後關閉檔案。

示例

在此示例中,我們首先將 file_path 變數定義為要寫入二進位制資料的檔案的路徑。然後,我們使用 open() 函式並將模式設定為 'wb' 以二進位制寫入模式開啟檔案。在 'with 塊' 內,我們生成一個名為 binary_data 的 bytearray 物件,其中包含我們需要寫入的二進位制資料。在本例中,我們有四個位元組的序列,其十六進位制值為。最後,我們使用 write() 方法將二進位制資料寫入檔案。

file_path = "path/to/file.bin"

with open(file_path, "wb") as file:
    binary_data = bytearray([0xFF, 0x00, 0x7F, 0x80])  
    # Example binary data as a bytearray
    file.write(binary_data)

示例

在此程式碼示例中,我們演示瞭如何使用 struct 模組寫入二進位制資料;它提供了打包和解包二進位制資料的函式。我們從匯入 struct 模組開始。然後,我們將 file_path 變數設定為檔案的路徑。在 'with 塊' 內,定義了兩個變數 value1 和 value2,它們表示我們要寫入的資料。我們使用 struct.pack() 函式將值打包成二進位制資料。在本例中,我們打包了一個整數 ("i") 和一個浮點數 ("f")。我們使用 + 運算子連線生成的二進位制資料,並使用 write() 方法將其寫入檔案。

import struct

file_path = "path/to/file.bin"

with open(file_path, "wb") as file:
    value1 = 123
    value2 = 3.14
    binary_data = struct.pack("i", value1) + 
struct.pack("f", value2)
    file.write(binary_data)

示例

這裡,我們首先匯入 array 模組。然後,我們將 file_path 變數定義為要寫入二進位制資料的檔案的路徑。我們生成一個名為 data 的陣列物件,併為其分配一系列無符號位元組值。在 with 塊內,檔案以二進位制寫入模式開啟,write() 方法用於將二進位制資料寫入檔案。在寫入之前,我們使用 tobytes() 方法將陣列轉換為位元組。

import array
file_path = "path/to/file.bin"

data = array.array("B", [10, 20, 30, 40, 50])  
# Example binary data as an array

with open(file_path, "wb") as file:
    file.write(data.tobytes())

示例

在最後一個示例中,我們演示了另一種使用 struct 模組打包二進位制資料的方法。首先,匯入 struct 模組。然後,file_path 變數被定義為檔案的路徑。我們有兩個變數 value1 和 value2,指向我們要寫入的資料。我們使用 struct.pack() 函式將值打包成二進位制資料。在本例中,我們打包了一個整數 ("i") 和一個浮點數 ("f")。生成的二進位制資料載入到 data 變數中。在 'with 塊' 內,檔案以二進位制寫入模式開啟,write() 方法用於將二進位制資料寫入檔案。

import struct

file_path = "path/to/file.bin"

value1 = 123
value2 = 3.14

data = struct.pack("i f", value1, value2)  
# Example binary data as a packed struct
with open(file_path, "wb") as file:
    file.write(data)

在本文中,正如您現在所看到的,我們已經探索了使用 Python 將二進位制資料寫入檔案的幾種方法。我們討論了涉及的步驟,包括以二進位制模式開啟檔案、寫入二進位制資料和關閉檔案。透過仔細遵循這些步驟並使用適當的模式和方法,您可以有效地將二進位制資料寫入 Python 中的檔案。無論您是處理影像、音訊檔案還是任何其他二進位制資料,掌握這項技能都將使您能夠在 Python 程式中優雅地處理非文字資料。

更新於: 2023-07-25

39K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告