Python 3では、bytes型データをstr型(文字列)に変換するために、decode()メソッドを使用します。特に外部プログラムから得たバイト列を文字列に変換する場合、適切なエンコーディングを指定することが重要です。

基本的な変換方法

例えば、UTF-8エンコーディングでバイト列を文字列に変換するには、次のようにします。

byte_data = b'hello'
string_data = byte_data.decode('utf-8')
print(string_data)  # 出力: hello

subprocess での使用

subprocessモジュールでコマンド出力を取得する際も、バイト列で返されます。この場合、text=Trueまたはencodingオプションを指定することで、自動的に文字列で出力を得ることができます。

import subprocess
result = subprocess.run(['ls', '-l'], text=True)
print(result.stdout)

もしくは、エンコーディングを指定して変換できます。

result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))

これらの方法を使えば、バイト列を効率的に文字列に変換し、処理することができます。