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'))
これらの方法を使えば、バイト列を効率的に文字列に変換し、処理することができます。