동아리원 분은 코드를 함수화 시켜서 기능별로 구현 하고 있었다.
내가 전날 구현한 파일 내용 찾기 기능을 함수화 하였고
어제 생각한 기능을 추가하였다.
변경점.
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 까지 구현해보도록 해야겠다.
'프로젝트 > 파일 내용 탐색 프로그램' 카테고리의 다른 글
6일차 마무리 (1) | 2023.10.17 |
---|---|
5일차 태그 기능 추가 (2) | 2023.10.16 |
3일차 본격적인 코드 구현 (0) | 2023.10.14 |
glob 모듈 (0) | 2023.10.12 |
Python을 활용한 파일 및 폴더 내용 찾기 1일차 (1) | 2023.10.11 |