본문 바로가기
아래아한글 자동화/python+hwp 입문

1-6. 폴더에 있는 한/글 파일을 모두 열기

by 회사원코딩 2022. 10. 21.
from pathlib import Path
from time import sleep

import win32com.client as win32


hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule")

path = Path("./sample")
for file in path.glob("*.hwp"):
    hwp.Open(file.absolute())
    print(hwp.GetPageText(0))
    sleep(1)

hwp.Quit()

이번 챕터에서는 파이썬 내장 라이브러리인 pathlib을 사용해서

여러 개의 한/글 파일을 여는 예제를 실행해보겠습니다.

위 코드는 실행위치 하위의 sample이라는 폴더 안의 hwp파일을 열고

각 문서의 1페이지의 텍스트만 콘솔에 출력하는 코드입니다.

위 코드를 그대로 복붙해서 실행해보겠습니다.

문서출처 : 과기정통부 보도자료 일부

 

코드 몇 줄만 부연설명을 드리면

from pathlib import Path


path = Path("./sample")

pathlib 모듈의 Path 클래스로 생성한 path 인스턴스는

경로나 파일을 다룰 때 유용한 객체입니다.

(파이썬 내장모듈인 pathlib의 사용법은 여기서 자세히 다루지는 않겠습니다.)

for문 안의 .glob()과 .absolute() 메서드를 조금만 더 설명드리면,

1. glob 메서드는, 검색 문자열을 받아서 그에 해당하는 파일의 Path 객체들을

제너레이터로 리턴해줍니다.

본 코드에서는 glob 메서드의 파라미터로 "*.hwp"를 받았으므로

for문 안에서 확장자가 hwp인 모든 Path 객체를

하나씩 순서대로 리턴해주었습니다.

2. absolute 메서드는, 상대경로 문자열을 통해 만들어진 객체의 절대경로(전체경로)를 리턴해줍니다.

absolute 메서드를 사용하는 이유는,

아래아한글 프로그램의 Open 메서드의 파라미터로 상대경로 입력시 아래처럼 오류가 발생하기 때문입니다.

3. 마지막으로 hwp.GetPageText 메서드는 한/글 문서의 페이지별 텍스트를 문자열로 출력하는데

인덱스가 0부터 올라가므로, 1페이지의 텍스트를 출력하려면 파라미터로 0을 입력해야 합니다.

 

반응형

댓글0