ホームページ >バックエンド開発 >Python チュートリアル >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 サイトの他の関連記事を参照してください。