あなたがいつも得た理由True
はすでに与えられているので、私は別の提案を提供します:
ファイルが大きすぎない場合は、それを文字列に読み取って、それを使用することができます(1行ずつ読み取り、チェックするよりも簡単で高速な場合があります)。
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 bytearray
は文字列ではなくオブジェクトのように動作するため、検索するサブシーケンスも文字列ではなくオブジェクトである必要find()
がありbytes
ます。s.find(b'blabla')
:
#!/usr/bin/env python3
import mmap
with open('example.txt', 'rb', 0) as file, \
mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
if s.find(b'blabla') != -1:
print('true')
mmap
たとえば、大文字と小文字を区別しない検索で正規表現を使用することもできます。if re.search(br'(?i)blabla', s):