[PDF 전자책] 파이썬을 이용한 업무 자동화 프로그램 만들기

728x90
파이썬을 이용한 업무 자동화
Thumbnail

일을 하다 보면 생각보다 자주 단순 반복작업을 하게 되는 경우가 있습니다.
 
때에 따라서 많은 데이터를 수집해야 할 수도 있고 주기적으로 메일을 보낸다거나 엑셀 파일의 수많은 데이터를 수정해야 할 수도 있습니다.
 
사람이 동시에 할 수 있는 일의 양과 그에 따른 시간은 한정적이기 때문에 단순 반복 작업을 자동화시킨다면 그만큼 낭비되는 시간을 아껴 업무 효율화를 추구할 수 있습니다.
 
마치 공장에서 일련의 프로세스들을 자동화 기계를 통해 비용과 시간 대비 생산량을 극대화시키듯, 정해진 패턴이 있고 비교적 많은 시간을 요구하는 작업이라면 컴퓨터를 통해 빠르고 효과적으로 처리할 수 있습니다.
 
물론 기본적으로 특정 기능을 하는 프로그램이 아니라 직접 프로그래밍을 통해 자신이 원하는 기능을 구현하는 것이기 때문에 Python 혹은 최소한 하나의 프로그래밍 언어에 익숙하고 자신의 생각을 코드로 나타낼 수 있는 역량이 필요합니다.
 
만약 코드를 직접 구현할 자신이 없다면 언어와 관련된 학습은 구글링을 통해 쉽게 집약된 자료를 찾을 수 있고 자신의 생각을 코드로 나타내는 부분은 알고리즘 연습을 통해 충분히 독학 가능하다고 생각합니다.
 
https://kmong.com/knowhow/gig/290286

전문가가 필요한 순간, 프리랜서 마켓 No.1 크몽

마케팅·디자인·IT프로그래밍·영상 등 다양한 비즈니스 분야의 전문가를 만나보세요!

kmong.com

 
알고리즘 같은 경우, 집약된 자료를 찾기 힘들어 정리할 겸 과외 경험을 살려 최대한 이해하기 쉽게 작성했으며 반응도 좋았기에 충분히 도움 될 것이라 생각합니다.
 
자동화 프로그램을 작성하는데 자신의 상황에 맞게 로직을 구성하고 해당 논리를 그대로 코드로 구현할 수준이면 되기 때문에 굳이 어려운 알고리즘을 학습할 필요가 없어 부담 갖지 않으셔도 됩니다.
 
이를 통해 기본적인 프로그래밍에 대한 역량을 갖췄다면 이젠 실 생활에 적용하여 소위 말하는 "일잘러"로 거듭나는 일만 남았습니다.
 
실제로 저도 취준생 때 재밌을 것 같아 직접 구현해 보고 이를 프로젝트에 적용하여 팀원들에게 좋은 평가를 받았었고 면접에서도 강점으로 어필하였으며 실무에서도 효율적인 업무가 가능했습니다.
 
또한 전자책을 완성한 직후 평가를 위해 지인과 직장 선배들에게 공유했었는데 일관되게 긍정적인 피드백을 받았습니다.
 
아무래도 소비자분들께 판매를 하는 전자책이기 때문에 저 스스로가 완벽하다고 생각하지 않으면 서비스를 올려두지 않습니다.
 
관심 있으신 분들은 아래 링크를 통해 어떤 내용들이 있는지 확인해 보고 고민해 보시는 것을 추천드립니다.
 
https://kmong.com/knowhow/gig/490311

전문가가 필요한 순간, 프리랜서 마켓 No.1 크몽

마케팅·디자인·IT프로그래밍·영상 등 다양한 비즈니스 분야의 전문가를 만나보세요!

kmong.com

 
만약 구매하신 분들 중에서 날카로운 피드백을 크몽을 통해서나 블로그 댓글로 남겨주신다면 적극 수용, 반영하고 수정된 내용들을 다시 드리도록 하겠습니다.

728x90

댓글()

파이썬 Pyautogui로 매크로 만들기

취업 후 학습|2023. 2. 26. 18:54
728x90

파이썬은 인터프리터 언어라 컴파일 언어에 비해 비록 느리지만 사용자 친화적으로 쉬운 구문과 광범위한 응용 프로그램에 사용할 수 있단 장점이 있다.

 

특히 강력한 라이브러리로 데이터 분석, AI, 자동화 등에 강점을 보이는데 이번에는 자동화(매크로)에 자주 쓰이는 Pyautogui에 대해 알아보자.

 

시작 전에 처음 들어봤거나 확실하게 알지 못하는 사람들을 위해 매크로가 무엇인지 알아보자.

 

매크로란 컴퓨터 과학 분야에서 정해진 순서에 따라 특정한 입력 시퀀스가 출력 시퀀스를 정의하는 규칙이나 패턴을 말한다. (출처 : 위키백과)

 

즉, 쉽게 풀어서 말하자면 정해진 반복 작업을 컴퓨터가 수행하는 것이다.

 

특히 게임이나 티켓팅, 수강신청 등에서 매크로란 단어를 많이 접했을 텐데 이들의 공통점이 정해진 위치를 반복적으로 이동, 클릭, 입력한다는 점이다.

 

로직만 잘 구성한다면 불필요한 반복 작업을 컴퓨터에게 대신시킬 수 있기 때문에 아주 유용한 스킬이다.

 

Pyautogui 사용하기


그럼 Pyautogui를 설치해 보자.

 

필자는 윈도우 환경이며 Visual Studio Code를 사용하기 때문에 터미널에 바로 입력하면 된다.

 

Pyautogui 설치 로그
Pyautogui 설치 로그

 

명령어는 pip install pyautogui이고 위 사진처럼 Successfully installed 로그가 찍힌다면 설치가 완료된 것이다.

 

이제 Pyautogui를 설치했으니 관련 함수들을 알아보자.

 

함수들은 크게 마우스, 키보드, 이미지 관련 함수로 나눌 수 있는데 상당히 함수가 많기 때문에 그중에서도 자주 쓰일만한 함수들만 정리했다. 

 

특히 빨간 표시는 생략 가능한 옵션을 뜻한다.

 

 마우스 관련 함수
 position()  마우스의 현재 위치 좌표 출력
 mouseInfo()  마우스의 죄표, RGB Color 등 관련 정보
 moveTo(x, y, n)  좌표 (x, y)로 n 초 동안 이동
 dragTo(x, y, n)  좌표 (x, y)로 n 초 동안 드래그
 click(button=’right’)  왼쪽 클릭 (오른쪽 클릭)
 click(clicks=n, interval=t)  왼쪽 클릭 (t초 간격으로 n번 클릭)
 doubleClick()  왼쪽 더블 클릭
 scroll(x)  x만큼 스크롤 이동(양수면 위, 음수면 아래)
 키보드 관련 함수
 write(‘String’, interval=n)  영어 문자열을 n초 마다 입력 (한글 지원 X)
 keyDown(‘key’)  key에 해당하는 키를 누름
 keyUp(‘key’)  key에 해당하는 키를 뗌
 press([‘key’], presses=n, interval=t)  리스트에 있는 키를 t초에 한 번씩 n 입력
 hotkey(‘key1’, ’ key2’)  key1, key2 입력
 KEYBOARD_KEYS  입력 가능한 키 리스트
 이미지 관련 함수
 screenshot(‘test.png’, region=(x1, y1, x2, y2))  스크린샷 이미지 객체 반환, test.png 명으로 파일 저장, (x1, y1) 부터  (x2, y2)까지의 영역
 locateOnScreen(‘test.png’)  test.png 와 일치하는 영역 반환(left, top, width, height)
 locateAllOnScreen(‘test.png’)  test.png 와 일치하는 모든 영역 반환(left, top, width, height)
 locateCenterOnScreen(‘test.png’)  test.png 와 일치하는 영역의 중앙 좌표 반환
 기타 함수
 size()  주 모니터 크기 반환(width, height)
 countdown(n)  n초 동안 카운트 다운하며 각 숫자를 출력
 PAUSE = t  각 함수별 t초 딜레이(Default = 0.1초)

 

특히 매크로는 정해진 좌표를 반복 클릭하기 때문에 구현 단계에서 좌표를 얻을 수 있는 mouseInfo()가 상당히 유용한 함수다.

 

주의해야 할 점은 키보드 관련 함수에서 알파벳키를 입력하고 실제 입력 상황에서 한글로 되어 있다면 상관없지만 write로 직접 한글 입력은 지원하지 않기 때문에 한글 입력을 위해선 편법을 위한 추가 사항이 조금 필요하다.

 

바로 pyperclip을 설치해서 클립보드에 한글을 복사 후 붙여 넣기 하는 방식이다.

 

명령어는 pip install pyperclip이며 pyautogui를 설치할 때처럼 동일하게 하면 된다.

 

import pyperclip, pyautogui

# 클립보드에 한글 문자열 복사
pyperclip.copy('한글 입력 테스트')

# ctrl + v 로 붙여넣기
pyautogui.hotkey('ctrl', 'v')

 

설치 후 위 코드처럼 작성하면 한글을 입력하는 듯한 효과를 볼 수 있다.

 

모든 함수를 사용한 예제를 보기엔 너무 방대하므로 간단하게 특정 위치를 반복 클릭하는 매크로와 임시 비밀번호를 생성해서 저장하는 예제를 살펴보자.

 

반복 클릭 매크로


import pyautogui

# 첫 시작 위치로 이동
pyautogui.moveTo(334, 351)

# 시작 위치에서 마우스가 벗어나면 반복 중지
while pyautogui.position().x == 334 and pyautogui.position().y == 351:
    pyautogui.click()
    pyautogui.moveTo(320, 446)
    pyautogui.click()
    pyautogui.moveTo(334, 351)

 

위 코드는 특정 위치를 무한 반복 클릭하는 코드다.

 

이때 주의해야 할 점은 마우스를 다루기 때문에 딜레이나 무한 루프를 탈출할 조건을 사용하지 않을 경우 이도저도 못하는 난감한 상황이 발생할 수 있다.

 

해당 예제에서는 시작 위치를 정하고 마우스가 위치를 벗어날 경우 프로그램을 종료하도록 작성했다.

 

위와 같은 로직으로 미리 mouseInfo() 함수를 이용해서 좌표 정보를 얻고 작성하면 빠르게 반복 클릭할 수 있다.

 

임시 비밀번호 생성 후 저장


import pyautogui, random, time

# 길이가 8인 소문자 임시 비밀번호 생성
def temp_pw():
    pw = ''
    for i in range(8):
        pw += chr(random.randrange(97,123))
    return pw

# 메모장 위치
pyautogui.moveTo(496, 423)
pyautogui.doubleClick()

# 메모장이 켜질때까지 대기
time.sleep(1)

# 메모장에 커서 생성
pyautogui.moveTo(604, 713)
pyautogui.click()

# 5개의 임시 비밀번호 생성
for i in range(5):
    pyautogui.write(temp_pw()+'\n')

# 저장
pyautogui.hotkey('ctrl', 's')

# 메모장 종료
pyautogui.hotkey('alt', 'f4')

 

필자는 임시 비밀번호를 저장하기 위한 메모장을 생성했었고 해당 위치 좌표로 이동 후 더블 클릭으로 켰다.

 

너무 속도가 빨라 엉뚱한 곳을 클릭하는 것을 방지하기 위해 메모장이 켜질 때까지 대기하려 time.sleep(1)을 했다.

 

메모장이 켜지면 커서를 생성하기 위해 한번 클릭을 했고 소문자로 이루어진 8자리 임시 비밀번호를 저장 후 종료하는 로직이다.

 

이처럼 파이썬의 자동화 도구를 잘 사용하면 불필요한 반복 작업을 컴퓨터에게 시킬 수 있어 상당히 편리하고 개인에게 강력한 무기가 될 수 있다고 생각한다.

 

필자도 종종 필요한 경우 자동화 코드를 작성해서 편리했고 이를 본 주위 사람들이 신기해했던 경험이 있기 때문이다.

 

차후에 단순한 마우스, 키보드 자동화 말고도 엑셀 파일처럼 업무 자동화에 대해서도 가능한 자세히 포스팅하도록 하겠다.

728x90

'취업 후 학습' 카테고리의 다른 글

스프링이란? 스프링과 스프링 부트의 차이점은?  (0) 2023.06.20
리액트 data.map is not a function 에러 해결  (0) 2023.05.03
jQuery로 요소 찾기  (0) 2023.01.03
SAP ERP란  (0) 2022.09.29
Git Branch 전략  (0) 2022.08.17

댓글()