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