728x90
반응형
SMALL
728x90
ㅁ 개요
O 프로그램 소개
- 사용자가 검색할 폴더와 키워드를 입력하면 해당 폴더내 파일내용에서 키워드가 포함된 모든 파일을 찾아주는 프로그램 입니다.
(본 블로그의 내용은 유튜브 동영상(파이썬 파일내용 검색 프로그램 만들기)에서 더욱 자세히 보실 수 있습니다.)
O 완성된 프로그램 실행 화면
- 아래에서는 'C:\Temp2' 폴더내의 모든 파일을 검색 후 키워드 '이력서'가 포함된 파일을 보여줍니다.
- C:\Temp2\b.txt와 C:\Temp2\old\search_keyword.txt에 '이력서'라는 단어가 포함된것을 볼 수 있습니다.
ㅁ 세부 내용
O 완성된 소스
import os
print("""
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 프로그램 소개 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@ 본 프로그램은 특정 폴더내 파일들 속에 포함된 단어를 찾아주는 프로그램입니다. @@@@@@
@@@@@@ 사용법은 아래와 같습니다. (예시) @@@@@@
@@@@@@ @@@@@@
@@@@@@ 검색할 디렉토리명(전체경로)을 입력해 주세요: C:\Download @@@@@@
@@@@@@ 파일내 찾고자하는 키워드를 입력해 주세요.: 개인정보 @@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
""")
user_input = input("검색할 디렉토리명(전체경로)을 입력해 주세요.: ") # input()함수를 사용하여 사요앚의 입력 디렉토리를 받아 user_input에 저장
searchstring = input("파일내 찾고자하는 키워드를 입력해 주세요.: ") # input()함수를 사용하여 사요앚의 입력 디렉토리를 받아 user_input에 저장
for (path, dir, files) in os.walk(user_input): # 특정 경로에 존재하는 모든 하위 디렉토리를 탐색하며 원하는 파일을 찾고자 할때 os.walk 사용
# print(path, dir, files) # 여기서는 입력한 디렉토리인 C:\Temp2 아래의 하위 디렉토리까지 돌면서 파일을 찾을 수 있음
for filename in files: # 파일들을 목록에서 하나씩 꺼내서
# print(filename)
with open(path+os.sep+filename, 'r', encoding='UTF8') as f: # 파일(C:\temp2\a.txt)을 읽기모드('r')로 한글이 열리도록(encoding='UTF8') 열고,
try: # 에러 발생시 예외를 처리하기 이해 try~except 구문 사용
if searchstring in f.read(): # 파일 내용 중 키워드(예: '이력서')가 존재하면 if문 실행
print("===========================================================")
print(path+os.sep+filename, " \t파일에 '", searchstring, "' 단어가 포함되어 있습니다.")
else:
pass # 파일 내용 중 키워드("예: 이력서")가 존재하지 않으면 아무것도 하지 않고 다음 단계로 넘어감
f.close()
except: # except에 pass로 지정해 주면 에러가 발생하더라도 중지되지 않고, skip하여 다음 단계로 넘어간다.
pass
O 핵심 내용
1.os.listdir() : 디렉토리 내 모든 파일을 리스트 해주는 함수
2.os.sep : OS의 폴더 경로 구분자(윈도우는 \, / 둘다 상관없음)
3.os.path.isfile() : 경로에 파일이 존재하면 참(True)
4.with open(file, 'r') as f: : 파일(file)을 읽기('r') 모드로 열때 사용
5.encoding='UTF8' : 한글이 깨질때 사용
6.os.walk() : os.listdir()과 비슷하나, 하위디렉토리까지 돌면서 모든 파일을 리스트해주는 함수, os.listdir()함수는 자신의 첫번째 디렉토리의 모든 파일만 리스트함
O 기본 내용
1.input()함수로 사용자로 부터 검색할 경로와 찾을 키워드를 입력 받습니다.
2.os.listdir()함수를 사용하여 사용자가 입력한 디렉토리내 모든 파일을 files변수에 담고,
files에 담겨진 파일들을 하나씩 확인하면서(with open(file, 'r', encoding='UTF8' 로 파일을 읽고)
키워드가 포함되어 있으면 해당 파일의 전체경로를 보여줍니다.
3.위에서는 하위 디렉토리인 old 안에 있는 search_keyword.txt 파일을 찾지 않았는데, 이를 개선하기 위해서 os.walk()함수를 사용하여 하위 디렉토리까지 검색하도록 해줍니다.
for (path, dir, files) in os.walk(user_input): <-------- 이부분이 어려울 수 있는데, 익숙하지 않기 때문이며, 자주 쓰는 패터이므로 이런게 있구나 정도로 기억하시면 좋습니다.(외울 필요 없고요, 나중에 찾을 수 있으면 됩니다.)
ㅁ 정리
O 우리가 배운 내용
- 파일내용 검색 프로그램을 만들어 보면서 다양한 함수의 사용법을 익혔습니다.
- 이로써 우리는 나중에 더 큰 프로그램 작성시 이를 기반으로 활용할 수 있는 토대로 닦았습니다.
- os.walk() 등 위의 핵심 내용은 외울 필요는 없지만, 나중에 필요시 다시 찾아 볼때 "아 이런 내용이었지!!' 정도는 기억할 수 있도록 해주면 좋습니다.
O 숙제
- 위 소스를 기반으로 윈도우에서 파일내용을 검색하는 프로그램을 만들어 보면 실력을 키우는데 많은 도움이 될 것으로 확신합니다.
728x90
반응형
LIST
'파이썬 실습 > 검색프로그램 만들기' 카테고리의 다른 글
파이썬 파일내용 검색 프로그램 만들기(GUI 버전) (2) | 2022.10.01 |
---|---|
파이썬 GUI 파일검색 프로그램 만들기-키워드 버전 (0) | 2022.09.18 |
파이썬 파일검색프로그램 만들기(키워드 버전 ) (0) | 2022.08.31 |
파이썬 GUI 파일검색 프로그램 만들기-파일크기 버전 (0) | 2022.08.17 |