首頁 >後端開發 >Python教學 >如何可靠地檢查 Python 文字檔案中是否存在字串?

如何可靠地檢查 Python 文字檔案中是否存在字串?

Barbara Streisand
Barbara Streisand原創
2024-12-10 07:38:12247瀏覽

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

在文字檔案中搜尋字串

您希望驗證文字檔案中是否存在特定字串並執行不同的操作根據結果。然而,儘管您付出了努力,您的程式碼始終返回 True,這讓您感到困惑。本指南將協助您找出問題並提供實現目標的替代方法。

您提供的原始程式碼有一個嚴重缺陷:它無法關閉文件對象,這可能會導致意外行為。透過新增帶有正確檔案關閉的try/finally 區塊,程式碼變得可靠:

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

考慮使用with 語句作為開啟和關閉檔案的簡潔而安全的方法,因為它會自動處理檔案關閉:

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

如果您的文字檔案大小適中,您可以採用另一種方​​法,將整個檔案讀入字串中。此方法通常比迭代每一行更快更簡單:

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

對於大量文本文件,您可以使用mmap.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')

記住,如果在Python 3 中使用mmap,請將find() 的子序列視為位元組物件(例如,b'blabla')以匹配Python 解譯器中 mmap 的行為。

以上是如何可靠地檢查 Python 文字檔案中是否存在字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn