
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
안녕하세요 업무 자동화 강의를 응용하기 위해 아래와 같은 문제를 풀고 있습니다.
# 지정된 폴더('포트폴리오' 폴더로 icloud drive에 저장되어 있음.)에서 pdf 파일 읽기
# pdf 내용 분석
# 핵심 키워드 추출
# 파일 이름 변경 ({핵심키워드}_{1})
1) 콘솔에 출력된 에러는 없으며 실행시, 정상적으로 '파일 이름 변경 및 이동이 완료되었습니다' 가 첨부됩니다.
2) 다만 문제는 정상 동작은 destination folder 생성 이후(line 7), 파일 이름이 변경되어야하는데, 이게 이뤄지지 않습니다.
new_name = f'{project_type}_{order_number}.pdf' (line 63)
작성된 코드 몇번째 줄이 문제인 것인지 예상가거나, 디버깅을 위한 출력할텐데 어느 단계인지 알려주시면 감사하겠습니다. 또한 디버깅을 할 코드는 어떻게 작성하면 좋을까요? e.g( print(f"처리 중인 파일: {filename}") )

작성한 코드 및 에러 메세지
오류 발생 시, 작성한 코드 전체와 에러 메시지를
import os
import shutil
from PyPDF2 import PdfReader
# 설정
source_folder = '/Users/admin/Library/Mobile Documents/com~apple~CloudDocs/2024 이력서 모음/포트폴리오' # PDF 파일이 있는 폴더
destination_folder = './폴더링 테스트' # 변경된 파일을 저장할 폴더
# 폴더 생성
os.makedirs(destination_folder, exist_ok=True)
# project structure 를 정의하고, 'key'(프로젝트 유형) & "value"(목차 항목 리스트)를 정의한다.
project_structure = {
'스토리 프로젝트': [
"프로젝트 배경",
"as-is & to-be",
"팀 외부 커뮤니케이션",
"어드민 & 시스템 설계시 고려사항"
],
'제휴 파트너사 프로젝트': [
"제휴 파트너사 어드민",
"프로젝트 배경",
"전략 및 해결 방안"
]
}
# 끝에 pdf를 가지고 있는 파일들만 source_folder, filename 과 결합하여 새로운 경로를 생성한다. 이후 filename 변수에 저장하여 파일을 꺼낸다.
for filename in os.listdir(source_folder):
if filename.endswith('.pdf'):
file_path = os.path.join(source_folder, filename)
# PDF 파일 열기
reader = PdfReader(file_path)
text = ''
# text 변수를 초기화한다.
for page in reader.pages:
text += page.extract_text() + ''
# 페이지의 문자를 추출하여, text 변수에 누적한다.
# 프로젝트 유형에 어디에 속하는지 검증하기 위해 초기화
project_type = None
# project_structure 각 프로젝트 유형에 대해 반복한다.
for key in project_structure:
# 각 유형의 목차 항목 중 하나라도 pdf 내용(text)에 포함되어 있다면, project_type 에 key 변수를 저장하고 반복을 중단한다.
if any(item in text for item in project_structure[key]):
project_type = key
break
# project_type 이 none이 아닌 경우, 아래 코드 실행
if project_type:
# order number를 1로 초기화한다.
order_number = 1
# 현재 프로젝트 유형에 상응하는 목차 항목 리스트를 반복한다.
for section in project_structure[project_type]:
# section이 text에 포함되어 있는지 확인 후 반복
if section in text:
# {프로젝트 유형}_{순서 번호}.pdf로 new_name 생성
new_name = f'{project_type}_{order_number}.pdf' # 예: 스토리 프로젝트_1.pdf
# destination_folder, new_name
new_file_path = os.path.join(destination_folder, new_name)
# 원본 pdf 파일 -> 새로운 경로로 이동
shutil.move(file_path, new_file_path)
order_number += 1 # 순서 증가 다음 목차에 적용
print("파일 이름 변경 및 이동이 완료되었습니다.")
첨부해 주세요.
Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.
Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!
