ホームページ > バックエンド開発 > Python チュートリアル > ファイルコンテンツを処理する際の Python の「TypeError: a bytes-like object is required」を解決する方法は?

ファイルコンテンツを処理する際の Python の「TypeError: a bytes-like object is required」を解決する方法は?

Susan Sarandon
リリース: 2024-12-02 17:54:12
オリジナル
677 人が閲覧しました

How to Resolve Python's

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

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

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