Python 3 telah memperkenalkan perubahan ketara dalam cara ia mengendalikan kandungan fail. Ini boleh menyebabkan ralat apabila memindahkan kod daripada versi Python yang lebih awal, seperti "TypeError: objek seperti bait diperlukan, bukan 'str'".
Ralat berlaku apabila cuba melakukan rentetan- seperti operasi pada objek bait, biasanya terhasil daripada membuka fail dalam mod binari (cth., 'rb'). Mari kita periksa senario biasa di mana ralat ini mungkin timbul:
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
Dalam contoh ini, nama fail dibuka dalam mod binari, bermakna semua data yang dibaca daripadanya dikembalikan sebagai objek bait. Walau bagaimanapun, pembolehubah baris berikutnya dianggap sebagai rentetan oleh operator in.
Untuk menyelesaikan ralat, seseorang boleh sama ada menyahkod objek bait atau membuka fail dalam mod teks dan bukannya mod binari.
Untuk menyahkod objek bait tmp ke dalam rentetan, seseorang boleh menggunakan nyahkod() kaedah:
if b'some-pattern' in tmp.decode(): continue
Sebagai alternatif, fail boleh dibuka dalam mod teks ('r' bukannya 'rb'), yang akan menyahkod data secara automatik sebagai ia dibaca:
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
Dengan mengikuti garis panduan ini, anda boleh memastikan bahawa kod Python 3 anda mengendalikan kandungan fail dengan betul dan mengelakkan Ralat "TypeError: objek seperti bait diperlukan".
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan 'TypeError: objek seperti bait diperlukan' Apabila Mengendalikan Kandungan Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!