텍스트 파일에서 문자열 검색
텍스트 파일 내에서 특정 문자열의 존재를 감지하려고 하다가 우연히 다음을 발견했습니다. 문자열의 존재 여부에 관계없이 코드가 예기치 않게 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!