전일차에선 단순 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
오늘 배웠던 내용
os모듈의 walk 기능 (하위폴더와 파일을 모두 찾을 수 있는 함수)
with, as 구문
try except
다음 4일 차부터는 여기에 기능을 추가하며 살을 붙이려 한다.
1. txt 파일 뿐 아닌 다른 파일 한글,word 등 지원
2. 찾는 파일이 없을 경우 검색결과가 없다고 출력
코드가 완성되면 QTpy5를 이용하여 GUI 구현
마지막에 딕셔너리 (해시) 자료구조를 이용하여 시간복잡도 효율율적으로 개선
'프로젝트 > 파일 내용 탐색 프로그램' 카테고리의 다른 글
6일차 마무리 (1) | 2023.10.17 |
---|---|
5일차 태그 기능 추가 (2) | 2023.10.16 |
4일차 기능 추가 및 선택지 추가 (0) | 2023.10.15 |
glob 모듈 (0) | 2023.10.12 |
Python을 활용한 파일 및 폴더 내용 찾기 1일차 (1) | 2023.10.11 |