안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
오늘은 엑셀이나 웹브라우저처럼 파이썬 전용 패키지가 없어서 조작을 할 수 없는 경우에 아주 유용한 PyAutoGUI라는 패키지에 대해서 배워보겠습니다.
저는 회사에서 SAP사의 ERP(Enterprise Resource Planning)를 사용하는데, 이걸 자동화 시키려고 하니깐 무료로 제공하는 API가 없어서 고민하던 중 해당 패키지를 사용하면 좋겠다는 생각이 들어서 공부해보게 되었답니다.
<관련 글>
2021.06.14 - [파이썬 패키지/사무자동화] - [Python / PyAutoGUI] 파이썬 마우스/키보드 조작 패키지_1편.마우스 조작하기
이번 시간에는 지난 시간에 이어 PyAutoGUI 패키지로 키보드 조작하는 법을 공부해 보겠습니다.
키보드가 작동하는 것을 확인하려면 일단 메모장을 켜주세요. 메모장이 아니더라도 입력이 가능한 프로그램이면 뭐든지 가능합니다.
저의 경우엔 그냥 VS code 코딩창을 이용했습니다.
1. 문자 입력하기
가장 기본적인 write 함수입니다. 문자열이나 리스트의 요소를 입력하는 함수입니다.
참고로 write 함수와 typewrite는 이름만 다르고 그 기능은 같은 함수이며, 이왕이면 좀 더 짧은 write 함수를 추천드립니다.
import pyautogui
pyautogui.click(500, 500)
pyautogui.write('Hello world!', interval=0.2)
pyautogui.write(['H', 'e', 'l', 'l', 'o'], interval=0.2)
2. 개별 키 입력하기
이러한 개별 키 입력 함수는 위에서와 같이 내용을 입력하기 보다는 키 자체의 기능을 이용할 때 많이 사용할 것 같습니다.
입력 가능한 키는 보기 좋게 표로 정리해 놓았으니 참고해주세요.
pyautogui.press('원하는 키')
<입력 가능한 키>
키 | 기능 |
'a', 'b', 'c', 'A', 'B', 'C', '1', '2', '3', '!', '@', '#' 등등 | 알파벳, 숫자, 특수문자 등등 |
'enter' (or 'return' or '\n') | ENTER |
'esc' | ESC |
'shift', 'shiftleft', 'shiftright' | SHIFT, 왼쪽/오른쪽 SHIFT |
'alt', 'altleft', 'altright' | ALT, 왼쪽/오른쪽 ALT |
'ctrl', 'ctrlleft', 'ctrlright' | CTRL, 왼쪽/오른쪽 CTRL |
'tab' (or '\t') | TAB |
'space' | SPACE |
'backspace', 'delete', 'del' | BACKSPACE, DELETE |
'pageup', 'pagedown', 'pgdn', 'pgup' | PAGE UP, PAGE DOWN |
'home', 'end' | HOME, END |
'up', 'down', 'left', 'right' | 방향키 |
'f1', 'f2', 'f3', and so on | F1 ~ F12 |
'pause' | PAUSE |
'capslock', 'numlock', 'scrolllock' | CAPS LOCK, NUM LOCK, SCROLL LOCK |
'insert' | INSERT |
'printscreen' | 화면 캡처 |
'winleft', 'winright' | 오른쪽/왼쪽 윈도우 키 (Windows 전용) |
'command' | Command (macOS 전용) |
'option' | OPTION (macOS 전용) |
hanguel', 'hangul', |
한/영 전환 (pyautogui에서 한글 지원 안해서 필요한지 모르겠음) |
그 외에도 사용가능한 키 확인 해보시려면 아래의 코드로 확인 가능합니다.
print(pyautogui.KEYBOARD_KEYS)
3. 조합 키 입력
키를 하나가 아니라 동시에 눌러줘야하는 경우가 있습니다. 단축키 처럼 말이죠.
이 기능을 이용하면 여러분들이 아시는 단축키를 모두 사용할 수 있으니 참 유용하겠죠?!
# 붙여넣기 단축키
pyautogui.hotkey("ctrl", "c")
# 같은 기능 (비추천)
pyautogui.keyDown("ctrl")
pyautogui.keyDown("c")
pyautogui.keyUp("c")
pyautogui.keyUp("ctrl")
4. 한글 입력
위에서 배운 write 함수로는 한글을 입력할 수가 없답니다. 그래서 pyperclip이라는 패키지를 이용해서 클립보드에 잠시 한글을 저장해뒀다가 붙여넣는 방식을 사용해야 합니다.
먼저 아래의 코드를 커맨드 창에 입력하셔서 pyperclip 패키지를 설치합니다. 저는 왜인지 모르지만 이미 설치되어 있네요. 아마 Anaconda 패키지에 포함되어 있는 걸까요?
pip install pyperclip
설치를 완료하셨다면 pyperclip을 임포트 해주시고, 아래와 같이 원하는 한글 문자열을 저장했다가 Ctrl+V 단축키로 붙여넣어 주면 끝~!
import pyperclip
# "코딩유치원"을 클립보드에 저장
pyperclip.copy("코딩유치원")
# 클립보드에 있는 내용을 붙여넣기
pyautogui.hotkey("ctrl", "v")
오늘 준비한 내용은 여기까지입니다.
다음 시간에는 화면에서 이미지를 인식해서 원하는 아이콘을 찾는 방법을 배워보겠습니다.
<참고 자료>
1. Automate the Boring Stuff with Python
https://automatetheboringstuff.com/2e/chapter20/
<나도코딩_업무자동화 유튜브 강의>
https://www.youtube.com/watch?v=exgO1LFl9x8&t=3083s