Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Fungsi Carian Rentetan Saya Sentiasa Kembali Benar?
Mencari Rentetan dalam Fail Teks
Berusaha untuk mengesan kehadiran rentetan tertentu dalam fail teks, anda telah terjumpa isu di mana kod secara tidak dijangka mengembalikan True tanpa mengira kewujudan rentetan. Mari kita siasat kod dan betulkan isu:
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"
Nama pembolehubah blabla mencadangkan bahawa terdapat rentetan yang anda cuba cari, tetapi ia tidak ditakrifkan dalam kod. Ini berkemungkinan punca isu di mana kod sentiasa mengembalikan True. Pastikan anda mentakrifkan blabla dengan rentetan yang sesuai yang anda cari sebelum menjalankan fungsi check().
Pendekatan Alternatif menggunakan fail dibaca:
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
Ini kaedah membaca keseluruhan fail ke dalam ingatan, membolehkan carian terus untuk rentetan. Walau bagaimanapun, perlu diingat bahawa pendekatan ini mungkin tidak sesuai untuk fail besar kerana had memori.
Pendekatan mmap:
import mmap with open('example.txt') as f: s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) if s.find('blabla') != -1: print('true')
mmap membenarkan mencipta memori- perwakilan fail dipetakan, dengan berkesan mencipta objek "seperti rentetan" yang menggunakan fail asas tanpa membaca keseluruhan fail ke dalam memori, mengurangkan penggunaan memori.
Atas ialah kandungan terperinci Mengapa Fungsi Carian Rentetan Saya Sentiasa Kembali Benar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!