ホームページ > バックエンド開発 > 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
リリース: 2024-12-01 08:39:11
オリジナル
480 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート