동아리원 분은 코드를 함수화 시켜서 기능별로 구현 하고 있었다.

 

내가 전날 구현한 파일 내용 찾기 기능을 함수화 하였고

 

어제 생각한 기능을 추가하였다.

 

변경점.

 

1. 함수화

 

2. 기능 추가 ( 찾은 파일 개수, 파일명 종합하여 출력 + 찾은 파일이 없다면 결과값이 없습니다 알리고 return)

 

# 코드

import os

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

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


def finder(target_directory, target_word):
  count = 0
  find_list = []

  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}' 내용이 포함되어 있습니다.")
                  count += 1
                  find_list.append(filename)

            except: # 파일의 내용을 탐색할 수 없다면
                pass
        if count == 0:
          return print("해당 내용이 포함되어있는 파일이 존재하지 않습니다.")

  print(f'총 {count}개의 파일을 찾았습니다.')
  print("찾은 파일 이름 리스트 출력")
  for name in find_list:
     print(name)
 
finder(target_directory,target_word)

 

실행 결과

그리고 다른 기능(함수)를 구현하였을 때 선택하여 사용할 수 있도록 선택지를 제공하는 코드도 추가하였다.

 

import os

print("한동찬 파일 내용 찾기 프로그램")

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

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

def finder(target_directory, target_word):
  count = 0
  find_list = []

  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}' 내용이 포함되어 있습니다.")
                  count += 1
                  find_list.append(filename)

            except: # 파일의 내용을 탐색할 수 없다면
                pass
        if count == 0:
          return print("해당 내용이 포함되어있는 파일이 존재하지 않습니다.")

  print(f'총 {count}개의 파일을 찾았습니다.')
  print("찾은 파일 이름 리스트 출력")
  for name in find_list:
    print(name)




print("1. 파일 내용 찾기")
print("원하는 기능의 번호를 입력해주세요 : ",end="")
user_choice = int(input())

if user_choice == 1:
  finder(target_directory, target_word)
else:
  print("프로그램 종료")

 

# 마무리

 

파일의 내용을 찾는 핵심적인 기능은 어느정도 만든 듯 하다.

 

이제 다른 확장자 (hwp, word 등) 을 지원하는 것을 일차적 목표로 해야겠다.

 

시간이 허락한다면 GUI 까지 구현해보도록 해야겠다.