【Python入門】Pythonのbytes関数とは?使い方と活用方法を徹底解説(Python 3.11)

Python

はじめに

Pythonにはさまざまなデータ型があり、その中でもbytes型はバイナリデータを扱う際に重要な役割を果たします。本記事では、bytes関数の基本から応用まで詳しく解説します。初心者の方でも理解しやすいように、実際の使用例とともに紹介していきます。

bytes関数とは?

bytes関数は、バイト列(バイナリデータ)を生成するための組み込み関数です。Pythonでは文字列はstr型として扱われますが、バイナリデータを操作する場合はbytes型を使用する必要があります。特に、ファイルの読み書きやネットワーク通信などで活用されます。

bytes関数の基本構文

bytes関数の基本的な構文は以下の通りです。

bytes([source[, encoding[, errors]]])

主な使い方として、次のようなものがあります。

  1. 引数なしで呼び出す → 空のバイト列を作成
  2. 整数を指定する → 指定した長さのゼロバイト列を作成
  3. イテラブルオブジェクトを渡す → 各要素をバイト列に変換
  4. 文字列とエンコーディングを指定する → 指定したエンコーディングで文字列をバイト列に変換

bytes関数の使用例

1. 空のバイト列を作成

empty_bytes = bytes()
print(empty_bytes)  # 出力: b''

2. 指定した長さのゼロバイト列を作成

zero_bytes = bytes(5)
print(zero_bytes)  # 出力: b'\\x00\\x00\\x00\\x00\\x00'

3. リストやタプルをバイト列に変換

byte_list = bytes([65, 66, 67])
print(byte_list)  # 出力: b'ABC'

4. 文字列をバイト列に変換

string_bytes = bytes("こんにちは", "utf-8")
print(string_bytes)  # 出力: b'\\xe3\\x81\\x93\\xe3\\x82\\x93\\xe3\\x81\\xab\\xe3\\x81\\xa1\\xe3\\x81\\xaf'

bytes関数の応用例

1. バイナリファイルの書き込み

with open("example.bin", "wb") as file:
    file.write(bytes([72, 101, 108, 108, 111]))  # "Hello"のバイナリデータを保存

2. ネットワーク通信(ソケット通信)

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("example.com", 80))
sock.sendall(bytes("GET / HTTP/1.1\\r\\nHost: example.com\\r\\n\\r\\n", "utf-8"))
response = sock.recv(1024)
print(response)
sock.close()

3. Base64エンコード

import base64

original_bytes = bytes("Python", "utf-8")
encoded_bytes = base64.b64encode(original_bytes)
print(encoded_bytes)  # 出力: b'UHl0aG9u'

まとめ

本記事では、Pythonのbytes関数について詳しく解説しました。

  • bytes関数はバイナリデータを扱うために重要
  • 引数の種類によって異なるバイト列を作成可能
  • ファイル操作やネットワーク通信などで活用される

Pythonでバイナリデータを扱う際は、ぜひbytes関数を活用してみてください。