>백엔드 개발 >파이썬 튜토리얼 >내 문자열 검색 기능이 항상 True를 반환하는 이유는 무엇입니까?

내 문자열 검색 기능이 항상 True를 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-14 12:09:12845검색

Why Does My String Search Function Always Return True?

텍스트 파일에서 문자열 검색

텍스트 파일 내에서 특정 문자열의 존재를 감지하려고 하다가 우연히 다음을 발견했습니다. 문자열의 존재 여부에 관계없이 코드가 예기치 않게 True를 반환하는 문제가 있습니다. 코드를 조사하고 문제를 수정해 보겠습니다.

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"

변수 이름 blabla는 찾으려는 문자열이 있지만 코드 내에 정의되어 있지 않음을 나타냅니다. 이는 코드가 항상 True를 반환하는 문제의 원인일 가능성이 높습니다. check() 함수를 실행하기 전에 검색 중인 적절한 문자열로 blabla를 정의했는지 확인하세요.

파일 읽기를 사용하는 대체 접근 방식:

with open('example.txt') as f:
    if 'blabla' in f.read():
        print("true")

이것은 메서드는 전체 파일을 메모리로 읽어 문자열을 직접 검색할 수 있도록 합니다. 그러나 이 접근 방식은 메모리 제한으로 인해 대용량 파일에는 적합하지 않을 수 있다는 점을 명심하세요.

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')

mmap을 사용하면 메모리를 생성할 수 있습니다. 파일의 매핑된 표현을 사용하여 전체 파일을 메모리로 읽지 않고 기본 파일을 사용하는 "문자열 같은" 개체를 효과적으로 생성하여 메모리 사용량을 줄입니다.

위 내용은 내 문자열 검색 기능이 항상 True를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.