首页 >后端开发 >Python教程 >如何可靠地检查 Python 文本文件中是否存在字符串?

如何可靠地检查 Python 文本文件中是否存在字符串?

Barbara Streisand
Barbara Streisand原创
2024-12-10 07:38:12248浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn