在文本文件中搜索字符串
在尝试确定文本文件中是否存在特定字符串时,程序可能会遇到意想不到的行为。要纠正此问题,了解错误结果背后的根本原因至关重要。
原始代码:
def check(): datafile = file('example.txt') found = False for line in datafile: if blabla in line: found = True break check() if True: print "true" else: print "false"
错误结果的原因:
无论文件中是否存在字符串,所提供的代码都会始终返回 True,因为以下块中“if True”的评估与前面循环的逻辑无关。
if True: print "true" else: print "false"
Python with Open:
另一种方法读取文本文件是将“with”语句与“open()”函数结合使用。此方法创建一个自动处理文件关闭的“类似文件”对象。
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
使用内存映射:
处理文本文件的另一种技术是内存映射。这种方法将整个文件作为类似字符串的对象读取到内存中,从而可以更快地访问并可以使用正则表达式。
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')
通过遵循这些建议,您可以准确地搜索文本文件中的字符串并获得预期的结果。
以上是为什么我在 Python 文本文件中的字符串搜索总是返回 True?的详细内容。更多信息请关注PHP中文网其他相关文章!