Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memeriksa Kehadiran String dalam Fail Teks dalam Python?

Bagaimanakah Saya Boleh Memeriksa Kehadiran String dalam Fail Teks dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-12-10 07:38:12248semak imbas

How Can I Reliably Check for a String's Presence in a Text File in Python?

Mencari Rentetan dalam Fail Teks

Anda sedang mencari untuk mengesahkan kehadiran rentetan tertentu dalam fail teks dan melaksanakan tindakan yang berbeza berdasarkan hasil. Walau bagaimanapun, di sebalik usaha anda, kod anda secara konsisten mengembalikan True, membuatkan anda bingung. Panduan ini akan membantu anda menentukan isu ini dan menyediakan pendekatan alternatif untuk mencapai matlamat anda.

Kod asal yang anda bentangkan mempunyai kecacatan penting: ia gagal menutup objek fail, yang boleh membawa kepada tingkah laku yang tidak dijangka. Dengan menambahkan cubaan/akhirnya blok dengan penutupan fail yang betul, kod tersebut menjadi boleh dipercayai:

def check():
    try:
        datafile = open('example.txt')
        found = False
        for line in datafile:
            if 'blabla' in line:
                found = True
                break
    finally:
        datafile.close()

check()
if found:
    print("true")
else:
    print("false")

Pertimbangkan menggunakan pernyataan with untuk cara ringkas dan selamat untuk membuka dan menutup fail, kerana ia mengendalikan penutupan fail secara automatik:

with open('example.txt') as datafile:
    found = False
    for line in datafile:
        if 'blabla' in line:
            found = True
            break

if found:
    print("true")
else:
    print("false")

Jika fail teks anda bersaiz sederhana, anda boleh menggunakan pendekatan alternatif dengan membaca keseluruhan fail ke dalam rentetan. Kaedah ini selalunya lebih pantas dan lebih mudah daripada mengulangi setiap baris:

with open('example.txt') as f:
    if 'blabla' in f.read():
        print("true")

Untuk fail teks yang luas, anda boleh menggunakan mmap.mmap() untuk mencipta peta memori yang disokong fail, mengelakkan keperluan untuk memuatkan keseluruhan fail ke dalam ingatan:

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')

Ingat, jika menggunakan mmap dengan Python 3, layan urutan untuk find() sebagai objek bait (cth., b'blabla') untuk memadankan gelagat mmaps dalam penterjemah Python.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memeriksa Kehadiran String dalam Fail Teks dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn