在文本文件中搜索字符串
您希望验证文本文件中是否存在特定字符串并执行不同的操作根据结果。然而,尽管您付出了努力,您的代码始终返回 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中文网其他相关文章!