Python でのバイトのエンコードとデコード: 文字列変換のガイド
バイト オブジェクトは、外部プログラムと対話したりバイナリ データを処理したりするときによく発生します。 。これらを効果的に操作するには、文字列への変換、または文字列からの変換が必要になる場合があります。この記事では、外部コマンドの出力を含むバイト オブジェクトを通常の Python 文字列に変換する際の具体的な問題について説明します。
問題: バイトを文字列に変換する
Python 3 の次の例を考えてみましょう。
>>> from subprocess import * >>> stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0] >>> stdout b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
stdout 変数には、次のことを表すバイト オブジェクトが含まれています。 「ls -l」コマンドの出力。人間が読める形式で出力するには、文字列に変換する必要があります。
解決策: Decode メソッドを使用する
decode() メソッドが使用されます。バイトオブジェクトを文字列に変換します。これは、bytes オブジェクト内のデータの文字エンコーディングを指定するエンコーディング パラメーターを受け取ります。
>>> stdout_str = stdout.decode('utf-8') >>> print(stdout_str) -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1 -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2
この例では、テキストの一般的なエンコーディングであるため、エンコーディングとして 'utf-8' を指定します。データ。ただし、処理される特定のデータに対して正しいエンコーディングを使用することが重要です。
注:
上記の解決策は、テキスト データを表すバイト オブジェクトの変換には適切に機能します。すべてのバイト オブジェクトにテキストが含まれるわけではないことに注意することが重要です。バイナリ データを処理するには、さまざまなテクニックが必要になる場合があります。
以上がPython でバイト オブジェクトを外部コマンドから文字列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。