인프런 커뮤니티 질문&답변

ㅇㅅㅇ님의 프로필 이미지
ㅇㅅㅇ

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

한/글 문서를 불러오고, 저장하고, 닫기

vscode 자동완성

작성

·

71

1

강사님 안녕하세요
강사님이 남기신 자료를 바탕으로 5~6년간 잘 공부하고 있다가 이번에 강의까지 수강하게 된 열혈 수강생입니다.

 

강의 내용이 매우 흡족하고 좋습니다.

한가지 궁금한 사항이 있어 글을 남깁니다.

vscode에서는 자동완성 기능이 있어

예를 들면 Path. 까지 타이핑하면 뒤에 자동으로 올 함수 등을 제시해 주는데

hwp = win32.gencache.EnsureDispatch('hwpframe.hwpobject')

생성한 hwp 객체에 hwp. 하면 뒤에 올 수 있는 것에 대한 자동완성이 작동하지 않습니다. 혹시 자동완성이 되도록 하는 방법이 있을까요?

 

매번 레퍼런스 찾기도 어렵고 대강 지식을 갖추고 나서 vscode의 도움으로 코드를 진행하고 싶은데 쉽지 않네요.. ^^
 

답변 1

2

일코님의 프로필 이미지
일코
지식공유자

안녕하세요? 회신이 늦었습니다^^;

제가 vscode에 익숙하지 않은 관계로,

분명 더 좋은 방법이 있을 수 있다는 점을 먼저 밝힙니다ㅜ

 

우선 아래 코드로 hwp 객체를 만들었다는 가정하에

import win32com.client as win32

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

hwp.까지 입력하시고 Ctrl-Space를 누르시면 자동완성 목록이 뜨잖아요?

근데 이게 모든 메서드와 프로퍼티가 뜨지 않습니다..

예를 들면 .CharShape은 뜨는데, hwp.XHwpWindows는 한 번에 뜨지 않고 타이핑을 한 후에야 뜬다든지,

hwp.XHwpWindows.이하로는 전혀 못 잡아주는 문제들..

 

녹화_2024_09_06_19_55_41_200.gif

이게 상당히 불편한 부분인데,

제가 자주 사용했던 세 가지 방법을 알려드려보겠습니다.

(기본적인 방법들이라 다 아시는 내용일 수 있어요ㅜ)

 

① dir() 사용하기

dir 함수로 아예 멤버 리스트를 확인해버리는 방법인데요.

아래와 같은 방식으로 사용합니다.

녹화_2024_09_06_19_59_36_373.gif

 

 

② hwp.a.b.c 를 d라는 변수에 넣고 자동완성

이것도 나름의 방법인데 될 때도 있고 안 될 때도 있는 것 같고 그래요....;

녹화_2024_09_06_20_01_28_890.gif

 

③ pyhwpx 모듈 사용

이건 자동완성을 보완하는 방법은 아니지만, 하여튼 추천드리는 방법입니다.

임포트하고 hwp인스턴스 생성하는 부분만 아래처럼 변경하시면,

나머지 인터페이스는 기존의 한/글 오토메이션API와 동일하므로 불편함 없이 사용하실 수 있을 겁니다.

hwp의 멤버들은 우선 거의 모두 자동완성으로 보여주는데요. (직접 매핑작업을 했기 때문입니다..)

from pyhwpx import Hwp

hwp = Hwp()
녹화_2024_09_06_20_06_19_191.gif

 

특히, 기존의 Run 액션들은 문자열을 통해 명령하는 방식 때문에 자동완성이 되지 않아 번거로운데

pyhwpx에서는 전부 동일한 이름의 메서드로 매핑해놓은 덕분에 자동완성이 됩니다.
(노가다의 산물ㄷㄷ)

 

예를 들어 hwp.HAction.Run("SelectAll")이라는 액션은 hwp.SelectAll()로 실행할 수 있기 때문에

자동완성으로 코드를 짜기 훨씬 수월한 편입니다.

녹화_2024_09_06_20_11_15_519.gif

 

④ 위에서 소개해드린 방법 이외에도,

사실... 파이참에서는 Ctrl-Shift-Space로 제법 잘 잡아주거든요...

(그래서 위 방법들을 대부분 쓰지 않습니다;)

녹화_2024_09_06_20_35_21_645.gif

좌: VSCode, 우:Pycharm Professional


분명 vscode에도 좀 더 똑똑한 자동완성 기능이 따로 있을 겁니다.

 

하여튼 이런 방법들이 있어요.

혹시 더 좋은 방법을 발견하면 즉시 댓글로 남겨두겠습니다.

도움이 되었기를 바랄게요ㅋ

 

강의 수강해주셔서 감사드립니다.

질문 많이 남겨주세요! 제가 아는 선에서 최대한 상세히 설명을 남겨놓겠습니다.

 

행복한 하루 되세요^^

ㅇㅅㅇ님의 프로필 이미지
ㅇㅅㅇ
질문자

상세하고도 성의있는 답변에 감사드립니다.

충분히 만족하고 선생님 답변 덕분에

많은 시간이 절약될 것 같습니다. ^^

ㅇㅅㅇ님의 프로필 이미지
ㅇㅅㅇ

작성한 질문수

질문하기