ホームページ >バックエンド開発 >Python チュートリアル >Python 3 でファイルを処理するときに「TypeError: a bytes-like object is required, not 'str'」を修正する方法?

Python 3 でファイルを処理するときに「TypeError: a bytes-like object is required, not 'str'」を修正する方法?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-01 08:39:11421ブラウズ

How to Fix

Python 3 でのファイル コンテンツの処理: 「TypeError: 'str' ではなく、バイトのようなオブジェクトが必要です」の解決

Python 2.7 では、ファイルから行を読み取って操作を実行するのは簡単でした。ただし、Python 3.5 に移行すると、for ループ内の文字列比較を含む "if" ステートメントで「TypeError: a bytes-like object is required, not 'str'」という問題が発生する可能性があります。この不一致は、Python 3 でのファイル コンテンツの処理の違いから発生します。

Python 3 では、ファイルはデフォルトでバイナリ モードで開かれます。つまり、ファイルから読み取られたすべてのデータは文字列ではなくバイト オブジェクトとして返されます。これにより、for ループ内で文字列比較を実行するときにエラーが発生する可能性があります。

この問題を解決するには、次の 2 つのオプションがあります:

  1. ファイル オープン モードをテキスト モードに変更します: ファイルをテキスト モード (「rb」ではなく「r」) で開くと、データは読み取り時に自動的に文字列に変換され、問題が解決されます。 TypeError.
  2. 比較にバイトのようなオブジェクトを使用します: ファイルをバイナリ モードに保ちたい場合は、文字列の代わりにバイト オブジェクトを比較に使用できます。たとえば、「if 'some-pattern' in tmp: continue」の代わりに、「if b'some-pattern' in tmp: continue」を使用します。

これらの方法のいずれかに従うことで、ファイルのコンテンツが Python 3 で正しく処理されることを保証し、TypeError を防ぎ、中断することなくコーディングを続行できるようにします。

以上がPython 3 でファイルを処理するときに「TypeError: a bytes-like object is required, not 'str'」を修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。