>백엔드 개발 >파이썬 튜토리얼 >Python의 텍스트 파일에 문자열이 있는지 어떻게 확실하게 확인할 수 있습니까?

Python의 텍스트 파일에 문자열이 있는지 어떻게 확실하게 확인할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-10 07:38:12331검색

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으로 문의하세요.