직대딩 블로그

[Python] 유용한 python package - pyautogui 본문

프로그래밍/Python

[Python] 유용한 python package - pyautogui

Jae Yeon 2023. 5. 4. 16:23

안녕하세요?

파이썬 유용한 패키지에 대해 찾아보던 중 pyautogui 패키지를 알게 되어 소개해 드립니다.

pyautogui 패키지는 컴퓨터 화면에서 마우스와 키보드 입력을 자동화하는 데 사용되며, 자동화 스크립트나 GUI 테스트를 만드는 데 많이 사용된다고 합니다.

저같은 경우에는 회사에서 반복되는 작업을 자동화하여 일종의 매크로처럼 이용할 수 있을 거 같아 관심을 가지게 되었습니다.

사용을 위해서는 먼저 터미널에서 pip install pyautogui 명령어를 이용해 pyautogui 모듈을 설치해줘야 합니다.

다음은 pyautogui 패키지를 이용한 간단한 예제입니다.

아래는 소스코드 설명입니다.
1. subprocess 모듈의 Popen() 함수를 이용하여 "notepad.exe"를 실행시킵니다. 

2. input_str, repeat_num 변수에 값을 할당하여 입력할 문자열과 횟수를 정의합니다.

3. for 문을 이용해 repeat_num 만큼 반복합니다.

4. pyautogui 모듈의 write() 함수를 이용하여 input_str 변수에 저장된 문자열을 메모장에 입력합니다. 

5. 문자열이 입력되는 시간 간격을 조절을 위해 time 모듈의 sleep() 함수를 이용하여 0.5초간 대기합니다.

6. pyautogui 모듈의 press() 함수를 이용하여 엔터키를 입력합니다.

아래는 실행결과입니다. 메모장을 열고, 지정된 문자열이 입력된 것을 확인할 수 있습니다.

이를 이용하여 특정 웹 사이트에서 데이터를 수집하고 이를 파일에 저장하는 자동화 작업 등을 수행하는 프로그램도 만들 수 있을 거 같습니다.

 

- subprocess의 run 함수로 동일한 명령을 수행할 수 있던데 Popen함수를 사용한 이유 (run과 Popen의 차이점)

Popen() 함수는 비동기적으로 작동하여 여러 개의 프로세스를 동시에 실행할 수 있으며, 상호작용하는 데 사용된다고 합니다. 반면에 run() 함수는 동기적으로 작동하여 외부 프로세스가 완료될 때까지 기다렸다가 결과를 반환하는데 사용된다고 합니다. 제가 만든 프로그램에서는 사용자가 입력한 문자열을 여러 번 입력하고, 그 과정에서 프로그램이 중단되지 않도록 비동기적으로 메모장을 실행해야 합니다. 따라서 Popen() 함수를 사용하는 것이 적합할 것 같습니다.
+ 소스코드를 수정하여 run()을 이용하여 돌려보았더니, notepad.exe가 종료될 때까지 프로그램이 대기하네요! notepad.exe 가 종료되면 다음 로직들이 실행되었습니다.

Comments