バイナリファイルの読み取り 画像、音声、ビデオなどのデータ (非テキスト) を操作するための重要なスキルです。ファイルモードと 読む このメソッドを使用すると、バイナリ ファイルを簡単に読み取ることができます。 パイソン データを処理する能力があり、同意により特定の基準に従ってさまざまな支援が提供されます。扱っているかどうか マルチメディア ファイル、圧縮データ、またはカスタム バイナリ形式 バイナリ データを処理する Python の機能により、幅広いユースケースに対応する強力で多用途のアプリケーションを作成できます。この記事では、次のことを学びます バイナリファイルとは そして データをバイト配列に読み取る方法 、 そして バイナリデータをチャンクに分割して読み取りますか? 等々。
バイナリファイルとは何ですか?
一般に、バイナリは 2 を意味します。コンピューター サイエンスでは、バイナリ ファイルは数字を含むバイナリ形式で保存されます。 0 そして 1 。例えば、 バイナリ形式の数字 9 は「1001」として表されます 。このようにして、私たちのコンピュータは、あらゆるファイルを一連の 2 進数の機械可読形式で保存します。バイナリ ファイルの構造と形式は、ファイルの種類によって異なります。画像ファイルは音声ファイルとは構造が異なります。ただし、バイナリ ファイルのデコードはファイル形式の複雑さに依存します。この記事では、バイナリファイルの読み込みについて理解しましょう。
Python によるバイナリ ファイルの読み取り
バイナリファイルを読み取るには、
ステップ 1: バイナリ ファイルをバイナリ モードで開きます
Python でバイナリ ファイルを読み取るには、まずバイナリ モード (「rb」) でファイルを開く必要があります。これを実現するには、「open()」関数を使用します。
ステップ 2: バイナリ ファイルを作成する
Python でバイナリ ファイルを作成するには、ファイルをバイナリ書き込みモード ( wb ) で開く必要があります。詳細については、この記事を参照してください。
Python – ファイルにバイトを書き込む
ステップ 3: バイナリ データを読み取る
バイナリ ファイルをバイナリ モードで開いた後、read() メソッドを使用してその内容を変数に読み取ることができます。 read() メソッドは、バイナリ データを表すバイト シーケンスを返します。
ステップ 4: バイナリ データを処理する
バイナリ データを変数に読み込んだら、特定の要件に従ってそれを処理できます。バイナリ データの処理には、バイナリ データのデコード、コンテンツの分析、データの別のバイナリ ファイルへの書き込みなど、さまざまなタスクが含まれる場合があります。
ステップ 5: ファイルを閉じる
バイナリ データを読み取って処理した後、close() メソッドを使用してファイルを閉じ、システム リソースを解放し、ファイル アクセスに関する潜在的な問題を回避することが重要です。
Python3
配列javaに追加する
# Opening the binary file in binary mode as rb(read binary)> f>=> open>(>'files.zip'>, mode>=>'rb'>)> # Reading file data with read() method> data>=> f.read()> # Knowing the Type of our data> print>(>type>(data))> # Printing our byte sequenced data> print>(data)> # Closing the opened file> f.close()> |
>
>
出力:
バイトはバイナリ表現の基本単位であるため、出力にはバイト データのシーケンスが表示されます。
b'PKx03x04x14x00x00x00x08x00UxbdxebVxc2=jx87x1ex00x00x00!x00x00x00 x00x00 x00TODO11.txtxe3xe5JN,xceH-/xe6xe5x82xc0xccxbcx92xd4x9cx9cxccx82xc4xc4x12^.w7wx00PKx01 x02x14x00x14x00x00x00x08x00UxbdxebVxc2=jx87x1ex00x00x00!x00x00x00 x00x00 x00x00x00x00x00x01x00 x00x00x00x00x00x00x00TODO11.txtPKx05x06x00x00x00x00x01x00x01x008 x00x00x00Fx00x00x00x00x00'
バイナリデータをバイト配列に読み取る
このコードは、バイナリ データをファイルからバイト配列に読み取ってから、バイナリ データをバイナリ配列に読み込むには、while ループを使用してデータを出力する方法を示しています。コードをステップバイステップで説明しましょう。
バイナリファイルを開く
この行は、string.bin という名前のバイナリ ファイルをバイナリ モード (「rb」) で開きます。ファイルは読み取り用に開かれ、ファイル オブジェクトは変数「file」に保存されます。
Python3
# Open the binary file> file> => open>(>'string.bin'>,>'rb'>)> |
>
>
最初の 3 バイトの読み取り
この行は、バイナリ ファイルから最初の 3 バイトを読み取り、変数データに格納します。 read(3) メソッドはファイルからバイトを取得し、それに応じてポインタを進めます。
Python3
data>=> file>.read(>3>)> |
>
隣接する角度
>
while ループを使用してデータを出力する
ループは、ファイルの終わりに達するまで、一度に 3 バイトの読み取りと出力を続けます。ファイルの終わりに到達すると、read() メソッドは空のバイト オブジェクトを返し、while ループ条件で False と評価され、ループは終了します。
Python3
while> data:> >print>(data)> >data>=> file>.read(>3>)> |
>
>
バイナリファイルを閉じます
彼らは歌手です
最後に、ループがデータの読み取りと出力を完了した後、「close()」メソッドを使用してバイナリ ファイルを閉じ、システム リソースを解放します。
Python3
file>.close()> |
>
>
上記の手順を 1 つにまとめて使用すると、次のようになります。
コード出力は、 文字列.bin バイナリーファイル。このコードは、ファイルの終わりに達するまで、一度に 3 バイトずつデータを読み取り、出力します。ループの各反復では、ファイルから読み取られた 3 バイトが出力されます。
パイソン
# Open the binary file> file> => open>(>'string.bin'>,>'rb'>)> # Reading the first three bytes from the binary file> data>=> file>.read(>3>)> # Printing data by iterating with while loop> while> data:> >print>(data)> >data>=> file>.read(>3>)> # Close the binary file> file>.close()> |
>
>
たとえば、string.bin の内容が b'GeeksForGeeks' (6 バイトのシーケンス) の場合、出力は次のようになります。
出力:
b 'Gee' b ' ksf' b 'org' b 'eek' b 's'>
バイナリファイルをチャンクで読み取る
バイナリ ファイル データをチャンクで読み取るには、while ループを使用して、指定されたサイズ (chunk_size) のチャンクでファイルからバイナリ データを読み取ります。ループはファイルの終わりに到達するまで続き、それに応じてデータの各チャンクが処理されます。
この例では、chunk_size=1024 を使用して、バイナリ ファイルを読み取る各チャンクのサイズを指定します。 file = open(binary_file.bin, rb): この行は、binary_file.bin という名前のバイナリ ファイルをバイナリ モード (rb) で開きます。 while True は、ファイルの終わりに到達するまでファイルをチャンク単位で読み取り続ける無限ループを設定するために使用されます。チャンク = ファイル。 read(chunk_size) はループ内にあり、read(chunk_size) メソッドはファイルからバイナリ データのチャンクを読み取るために使用されます。
Python3
# Specify the size of each chunk to read> chunk_size>=> 10> file> => open>(>'binary_file.bin'>,>'rb'>)> # Using while loop to iterate the file data> while> True>:> >chunk>=> file>.read(chunk_size)> >if> not> chunk:> >break> ># Processing the chunk of binary data> >print>(f>'Read {len(chunk)} bytes: {chunk}'>)> |
>
>
Cの標準入力
コードの出力は、binary_file.bin バイナリ ファイルの内容と指定された chunk_size によって異なります。たとえば、ファイルにバイナリ データ「b こんにちは、これはバイナリ データです!」が含まれており、chunk_size が 10 に設定されている場合、出力は次のようになります:
出力:
Read 10 bytes: b'Hello, thi' Read 10 bytes: b's is binar' Read 7 bytes: b'y data!'>
出力は、読み取っているバイナリ ファイル データと、指定しているチャンク サイズによって異なります。
バイナリ ファイル データを配列に読み取る
バイナリ ファイルを array.bin に読み取り、wb モードを使用して特定のバイナリ ファイルを書き込みます。配列はファイルの名前です。配列をバイト形式で取得するには、配列を num=[3,6,9,12,18] として割り当てます。バイト配列()を使用します。
ファイルに配列を書き込むには、次のコマンドを使用します。
Python3
file>=>open>(>'array'>,>'wb'>)> num>=>[>3>,>6>,>9>,>12>,>18>]> array>=>bytearray(num)> file>.write(array)> file>.close()> |
>
>
指定されたファイルから書き込まれた配列を読み取るために、同じファイル、つまり file=open(array, rb) を使用しました。 rb はファイルから配列を読み取るために使用されます。 list() はリスト オブジェクトを作成するために使用されます。番号=リスト(ファイル.読み取り(3))。ファイルからバイトを読み取ります。 read()が使われます。
Python3
file>=>open>(>'array'>,>'rb'>)> number>=>list>(>file>.read(>3>))> print> (number)> file>.close()> |
>
>
出力:
[3,6,9]>
NumPy を使用して Python でバイナリ ファイルを読み取る
バイナリ ファイルを NumPy 配列に読み取るには、モジュール NumPy をインポートします。 dtype は、符号なし 8 ビット整数を表す np.unit8 です。これは、配列内の各項目が 0 から 255 の範囲の値を持つ 8 ビット (1 バイト) の整数であることを意味します。
Python3
import> numpy as np> # Open the file in binary mode> with>open>(>'myfile.bin'>,>'rb'>) as f:> ># Read the data into a NumPy array> >array>=> np.fromfile(f, dtype>=>np.uint8)># Change dtype according to your data> |
>
Javaの個別の文字列
>
ファイルをバイナリ ファイルに忘れずに変更してください
出力 :
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=np.uint8)>
関連記事