バイナリデータを含むファイルは、バイナリファイルと呼ばれます。フォーマットされた、またはフォーマットされていないバイナリデータはバイナリファイルに保存されます。このファイルは人間が読める形式ではなく、コンピュータによって直接使用されます。ある場所から別の場所への読み取りまたは転送にバイナリファイルが必要な場合、ファイルのコンテンツは人間が読める形式に変換またはエンコードされます。バイナリファイルの拡張子は.binです。バイナリファイルの内容は、組み込みの関数またはモジュールを使用して読み取ることができます。このチュートリアルでは、Pythonでバイナリファイルを読み取るさまざまな方法を示しました。
前提条件:
このチュートリアルの例を確認する前に、サンプルスクリプトで使用する1つ以上のバイナリファイルを作成することをお勧めします。 2つのPythonファイルのスクリプトは、2つのバイナリファイルを作成するために以下に示しています。 binary1.pyは、という名前のバイナリファイルを作成します string.bin これには文字列データが含まれ、binary2.pyはという名前のバイナリファイルを作成します number_list.bin 数値データのリストが含まれます。
Binary1.py
#ファイルハンドラーを開いてバイナリファイルを作成しますfile_handler= 開いた(('string.bin'、 'wb')。
#バイナリファイルに2行のテキストを追加します
file_handler。書きます((NS'LinuxHintへようこそ。NSPythonプログラミングを学ぶ。」)。
#ファイルハンドラーを閉じる
file_handler。選ぶ(()。
Binary2.py
#ファイルハンドラーを開いてバイナリファイルを作成しますファイル=開いた(('number_list.bin'、'wb')。
#数値のリストを宣言する
数字=[10、30、フォーファイブ、60、70、85、99]
#リストを配列に変換する
バレイ=bytearray((数字)。
#配列をファイルに書き込む
ファイル。書きます((バレイ)。
ファイル。選ぶ(()。
例-1:文字列データのバイナリファイルをバイト配列に読み込みます
Pythonには、バイナリファイルを読み取る方法がたくさんあります。一度に特定のバイト数またはバイナリファイルの全内容を読み取ることができます。次のスクリプトを使用してPythonファイルを作成します。 NS open()関数 を開くために使用されています string.bin 読むために。 NS read()関数 whileループと印刷の各反復で、ファイルから7文字を読み取るために使用されています。次に、 read()関数 後で印刷されるバイナリファイルの全内容を読み取るために、引数なしで使用されています。
#バイナリファイルを開いて読み取ります
file_handler= 開いた(('string.bin'、 'rb')。
#バイナリファイルから最初の3バイトを読み取ります
data_byte=file_handler。読んだ((7)。
印刷(('各反復で3文字を印刷します:')。
#ループを繰り返して、ファイルの残りの部分を読み取ります
その間data_byte:
印刷((data_byte)。
data_byte=file_handler。読んだ((7)。
#ファイル全体を1バイトの文字列として読み取る
と 開いた(('string.bin'、 'rb')。 なのでfh:
コンテンツ=fh。読んだ(()。
印刷(('バイナリファイルの全内容を印刷します:')。
印刷((コンテンツ)。
出力:
上記のスクリプトを実行すると、次の出力が表示されます。
例2:文字列データのバイナリファイルを配列に読み込みます
次のスクリプトを使用してPythonファイルを作成し、次の名前のバイナリファイルを読み取ります。 number_list.bin 以前に作成されました。このバイナリファイルには、数値データのリストが含まれています。前の例のように、 open()関数 スクリプトを読み取るためにバイナリファイルを開くことを使用しました。次に、最初の5つの数値がバイナリファイルから読み取られ、印刷前にリストに変換されます。
#バイナリファイルを開いて読み取りますファイル = 開いた(('number_list.bin'、 'rb')。
#最初の5つの数字をリストに読み込む
番号= リスト((ファイル。読んだ((5)。)。
#リストを印刷する
印刷((番号)。
#ファイルを閉じる
ファイル。選ぶ(()。
出力:
上記のスクリプトを実行すると、次の出力が表示されます。バイナリファイルには7つの数値が含まれており、最初の5つの数値が出力に出力されています。
例-3:NumPyを使用してバイナリファイルを読み取る
を使用してバイナリファイルを作成する方法 NumPyアレイ を使用してバイナリファイルの内容をリストに読み込みます。 NumPyモジュール チュートリアルのこの部分で示しています。以下のスクリプトを確認する前に、 NumPyモジュール ターミナルからコマンドを実行するか、 NumPyパッケージ スクリプトが実行されるPythonエディターで。 NS tofile()関数 テキストまたはバイナリファイルを作成するために使用され、 fromfile()関数 テキストまたはバイナリファイルを読み取って配列を作成するために使用されます。
tofile()の構文:
ndarray。ファイルへ((ファイル、9月=''、フォーマット='%NS')。最初の引数は必須であり、ファイル名、文字列、またはパスを値として取ります。この引数にファイル名が指定されている場合、ファイルが作成されます。 2番目の引数はオプションであり、配列要素を区切るために使用されます。 3番目の引数もオプションであり、テキストファイルの出力をフォーマットするために使用されます。
fomfile()の構文:
しびれ。fromfile((ファイル、dtype=浮く、カウント=-1、9月=''、オフセット=0、*、お気に入り=なし)。最初の引数は必須であり、ファイル名、文字列、またはパスを値として取ります。この引数にファイル名を指定すると、ファイルの内容が読み取られます。 NS dtype 返される配列のデータ型を定義します。カウントは、アイテムの数をカウントするために使用されます。の目的 9月 テキストまたは配列項目を分離することです。オフセットは、ファイルの現在の位置を定義するために使用されます。最後の引数は、配列オブジェクトを作成するために使用されます。 NumPyアレイ 。
次のスクリプトを使用してPythonファイルを作成し、を使用してバイナリファイルを作成します。 NumPyアレイ バイナリファイルの内容を読み取って印刷します。
#NumPyモジュールをインポートする輸入numpyなので例えば
#numpy配列を宣言する
nparray=例えば配列(([3. 4、 89、 30、 フォーファイブ、 90、 十一])。
#numpy配列からバイナリファイルを作成する
nparray。ファイルへ(('list.bin')。
#バイナリファイルからデータを出力する
印刷((例えばfromfile(('list.bin'、dtype=例えばint64)。)。
出力:
上記のスクリプトを実行すると、次の出力が表示されます。
結論:
このチュートリアルでは、簡単な例を使用して、バイナリファイルを読み取る3つの異なる方法を示しました。最初の例では、バイナリファイルの内容をバイト配列として返しました。 2番目の例では、バイナリファイルの内容をリストとして返しました。最後の例では、バイナリファイルの内容もリストとして返しました。