Cari Rentetan dalam Fail Teks
Dalam percubaan untuk menentukan kehadiran rentetan tertentu dalam fail teks, program boleh menghadapi tingkah laku yang tidak dijangka. Untuk membetulkan isu ini, adalah penting untuk memahami sebab asas di sebalik keputusan yang salah.
Kod Asal:
def check(): datafile = file('example.txt') found = False for line in datafile: if blabla in line: found = True break check() if True: print "true" else: print "false"
Sebab Keputusan Palsu:
Kod yang disediakan secara konsisten mengembalikan True tanpa mengira kehadiran rentetan dalam fail kerana penilaian 'jika Benar' dalam blok berikut tidak terikat dengan logik gelung sebelumnya.
if True: print "true" else: print "false"
Python dengan Terbuka:
Pendekatan alternatif untuk membaca fail teks adalah dengan menggunakan pernyataan 'dengan' bersama-sama dengan fungsi 'open()'. Kaedah ini mencipta objek 'seperti fail' yang mengendalikan penutupan fail secara automatik.
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
Menggunakan Pemetaan Memori:
Teknik lain untuk bekerja dengan fail teks ialah memori pemetaan. Pendekatan ini membaca keseluruhan fail ke dalam ingatan sebagai objek seperti rentetan, membolehkan akses lebih pantas dan kemungkinan menggunakan ungkapan biasa.
import mmap with open('example.txt', 'rb', 0) as file, \ mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s: if s.find(b'blabla') != -1: print('true')
Dengan mengikut cadangan ini, anda boleh mencari rentetan dalam fail teks dan dapatkan hasil yang diharapkan.
Atas ialah kandungan terperinci Mengapa Carian Rentetan Saya dalam Fail Teks Python Sentiasa Kembali Benar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!