728x90
728x90
아래는 Python으로 특정 디렉토리와 그 하위 디렉토리를 순회하면서 특정 문자열이 포함된 파일을 찾아내어 출력하는 프로그램 코드입니다. 이 코드는 os 모듈로 디렉토리를 탐색하고, open을 사용하여 파일 내용을 검색합니다.
728x90
Python 코드:
import os
def find_files_with_string(directory, search_string):
"""
특정 디렉토리 및 하위 디렉토리에서 특정 문자열을 포함하는 파일을 검색.
Args:
directory (str): 검색할 디렉토리 경로.
search_string (str): 검색할 문자열.
Returns:
list: 문자열이 포함된 파일 경로 리스트.
"""
matching_files = []
# 디렉토리 순회
for root, _, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
try:
# 파일 열기 및 검색
with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:
for line in f:
if search_string in line:
matching_files.append(file_path)
break # 한 번 찾으면 추가 검색 불필요
except Exception as e:
print(f"파일을 읽는 중 에러 발생: {file_path} - {e}")
return matching_files
# 실행 예제
if __name__ == "__main__":
search_dir = input("검색할 디렉토리 경로를 입력하세요: ")
keyword = input("검색할 문자열을 입력하세요: ")
result = find_files_with_string(search_dir, keyword)
print("\n검색 결과:")
if result:
for file in result:
print(file)
else:
print("검색된 파일이 없습니다.")
코드 설명:
- os.walk 사용:
- 지정한 디렉토리와 그 하위 디렉토리를 재귀적으로 탐색합니다.
- root는 현재 탐색 중인 디렉토리 경로, files는 해당 디렉토리 내의 파일 리스트입니다.
- 파일 내용 검색:
- open 함수로 파일을 읽고 검색어가 포함된 줄이 발견되면 해당 파일 경로를 저장합니다.
- encoding='utf-8', errors='ignore'로 인코딩 문제를 최소화합니다.
- 에러 처리:
- 파일 읽기 중 발생할 수 있는 오류(PermissionError, FileNotFoundError 등)를 처리하여 검색이 중단되지 않도록 합니다.
- 결과 출력:
- 문자열을 포함하는 파일 경로를 리스트로 반환하고 출력합니다.
728x90
실행 예시:
- 디렉토리: /path/to/search
- 검색어: "TODO"
검색할 디렉토리 경로를 입력하세요: /path/to/search
검색할 문자열을 입력하세요: TODO
검색 결과:
/path/to/search/file1.txt
/path/to/search/subdir/file2.py
추가 옵션 (필요 시)
- 특정 파일 확장자만 검색하고 싶다면 if file.endswith('.txt'):와 같은 조건을 추가하세요.
- 검색 결과를 파일로 저장하려면 with open('results.txt', 'w')를 사용하여 결과를 기록할 수 있습니다.
추가 요청 사항이 있으면 말씀해주세요! 😊
728x90
728x90
'Python을 배워보자' 카테고리의 다른 글
랭체인의 에이전트 기능을 통한 SQL 쿼리 자동 생성: 자연어로 데이터베이스를 탐색하는 새로운 방법 (0) | 2024.11.25 |
---|---|
오라클의 스토어 프로시져나 함수의 내용을 주석을 제외해서 내용중에 사용되는 테이블의 명들을 추출 (0) | 2024.11.25 |
Python으로 JSON 스키마 정의하고 데이터 유효성 검사하기 (3) | 2024.11.19 |
여신금융협회 매통조 API를 활용한 파이썬 예제: 데이터 기반 의사 결정을 위한 실용적인 가이드 (2) | 2024.11.17 |
오피넷 API를 활용한 파이썬 예제: 유가 정보 쉽게 가져오기 가이드 (0) | 2024.11.17 |