ホームページ >バックエンド開発 >Python チュートリアル >Python でテキスト ファイル内の文字列の存在を確実に確認するにはどうすればよいですか?

Python でテキスト ファイル内の文字列の存在を確実に確認するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-10 07:38:12258ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。