전일차에선 단순 OS모듈을 직접 사용해보며 익히는 시간이 있었다.

 

하나하나 익히면서 하기에는 시간이 촉박하다.

 

내가 구현할 코드를 자세하게 기록하면서 해야겠다. 

 

일단 내가 찾을 단어(패턴) 을 입력 받고

 

지정된 디렉터리도 직접 지정해주는 프로그램을 구상하였다.

 

# 10월 14일 토요일

# 지정된 디렉터리에서 내가 찾고자 하는 단어를 입력할 시 그 단어가 포함되어있는 파일명을 출력하는 프로그램

# 일단 txt파일만 지원

target_directory = input('검색할 디렉터리명 입력 : ')

target_word = input("파일내 찾고자하는 키워드 입력 : ")

 

일단 파일에 접근하려면 해당 디렉터리의 폴더를 찾아야 한다.

 

전에 OS모듈을 활용한 코드를 이용해보았다.

 

os.walk 함수는 모든 하위 폴더를 찾을 수 있다. 

 

출력 결과

이제 폴더를 찾았으니

 

파일의 내용속에서 내가 찾을 키워드를 찾으려면 파일을 열어야 된다.

 

open() 함수는 파일의 내용을 지정된 형식으로 열 수 있다.

 

나는 찾는 것이 목표이니 read 형식으로 열어주었다.

 

for (path, dir, files) in os.walk(target_directory):
    # 경로
    # 경로 내 디렉터리 리스트
    # files : 해당디렉터리의 파일
    # print(path, dir, files)

    for filename in files:
        # print(path+os.sep+filename)
        open(path+os.sep+filename, 'r', encoding='UTF8') # 인코딩 utf8로 지정하지 않으면 한글이 깨짐
        # os.sep은 경로구분자 \

구글링시 파일을 여는 과정에서 열리지 않을 파일의 예외처리를 위해 try, except 문을 사용하였다.

 

import os

target_directory = input('검색할 디렉터리명 입력 : ')

target_word = input("파일내 찾고자하는 키워드 입력 : ")

for (path, dir, files) in os.walk(target_directory):
    # 경로
    # 경로 내 디렉터리 리스트
    # files : 해당디렉터리의 파일
    # print(path, dir, files)

    for filename in files:
        # print(path+os.sep+filename)
        with open(path+os.sep+filename, 'r', encoding='UTF8') as f:# 인코딩 utf8로 지정하지 않으면 한글이 깨짐
        # os.sep은 경로구분자 \
        # with, f를 활용하여 자동으로 close
            try:
                if target_word in f: # 파일에 내용이 포함되어 있으면
                  print("--------------------------")
                  print(f"{filename}파일에 해당 {target_word}내용이 포함되어 있습니다.")
                 
            except: # 파일의 내용을 탐색할 수 없다면
                pass

3일차 최종 코드 출력 결과

 

오늘 배웠던 내용

 

os모듈의 walk 기능 (하위폴더와 파일을 모두 찾을 수 있는 함수)

with, as 구문

try except 

 

 

 

다음 4일 차부터는 여기에 기능을 추가하며 살을 붙이려 한다.

 

1. txt 파일 뿐 아닌 다른 파일 한글,word 등 지원

 

2. 찾는 파일이 없을 경우 검색결과가 없다고 출력

 

코드가 완성되면 QTpy5를 이용하여 GUI 구현

 

마지막에 딕셔너리 (해시) 자료구조를 이용하여 시간복잡도 효율율적으로 개선