Python 3 では、その処理方法に大幅な変更が導入されました。ファイルの内容。これにより、以前のバージョンの Python からコードを移行するときに、一般的な「TypeError: 'str' ではなく、バイトのようなオブジェクトが必要です」などのエラーが発生する可能性があります。
このエラーは、string- を実行しようとすると発生します。バイト オブジェクトに対する同様の操作。通常はファイルをバイナリ モード ('rb' など) で開くと発生します。このエラーが発生する可能性のある一般的なシナリオを調べてみましょう。
with open(fname, 'rb') as f: lines = [x.strip() for x in f.readlines()] for line in lines: tmp = line.strip().lower() if 'some-pattern' in tmp: continue # ... code
この例では、ファイル fname はバイナリ モードで開かれます。つまり、ファイルから読み取られたすべてのデータはバイト オブジェクトとして返されます。ただし、後続の行の変数は、in 演算子によって文字列として扱われます。
エラーを解決するには、バイト オブジェクトをデコードするか、バイナリ モードではなくテキスト モードでファイルを開くことができます。
バイト オブジェクト tmp を文字列にデコードするには、decode() を使用できます。メソッド:
if b'some-pattern' in tmp.decode(): continue
または、ファイルをテキスト モード (「rb」ではなく「r」) で開くこともできます。これにより、データが自動的に次のようにデコードされます。
with open(fname, 'r') as f: lines = [x.strip() for x in f.readlines()] for line in lines: tmp = line.strip().lower() if 'some-pattern' in tmp: continue # ... code
これらのガイドラインに従うことで、Python 3 コードがファイルのコンテンツを正しく処理し、 「TypeError: バイトのようなオブジェクトが必要です」エラー。
以上がファイルコンテンツを処理する際の Python の「TypeError: a bytes-like object is required」を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。