#10기4주차pyautogui과제
과제 설명
목표: 화면에 표시된 특정 아이콘(예: 홈 버튼)을 자동으로 찾아 클릭하는 프로그램을 만드세요.
요구 사항:
PyAutoGUI와 Pillow 라이브러리를 사용합니다.
아이콘의 스크린샷을 'icon.png'로 저장하고, 이 이미지를 화면에서 찾아서 클릭하세요.
프로그램이 아이콘을 찾지 못했을 때, 적절한 메시지를 출력하세요.
프로그램이 실행되기 전에 사용자에게 준비 시간을 주세요 (예: 5초).
샘플 코드
pythonCopy code
import pyautogui
import time
# 사용자가 준비할 시간을 줍니다.
print("5초 후에 프로그램이 시작됩니다.")
time.sleep(5)
# 화면에서 아이콘을 찾습니다.
location = pyautogui.locateOnScreen('icon.png')
if location:
# 아이콘의 중심으로 마우스를 이동합니다.
center = pyautogui.center(location)
pyautogui.moveTo(center)
# 마우스 클릭을 실행합니다.
pyautogui.click()
print("아이콘이 클릭되었습니다!")
else:
print("아이콘을 찾을 수 없습니다. 'icon.png' 파일을 확인하세요.")
과제 팁
이미지 캡처: 화면에서 원하는 아이콘의 이미지를 캡처하려면, 컴퓨터의 스크린샷 기능을 사용하세요. 그리고 'icon.png'로 저장합니다.
코드 테스트: 코드 를 실행하기 전에 'icon.png' 파일이 프로젝트 폴더 내에 올바르게 위치해 있는지 확인하세요.
오류 확인: 코드를 실행할 때 오류가 발생하면, 에러 메시지를 읽고 어떤 부분이 잘못되었는지 파악해 보세요. 대부분의 오류는 파일 경로 문제나 라이브러리 미설치에서 발생합니다.
이렇게 다 떠먹여주셔서…
이번 과제가 역대급으로 간단했고 우여곡절이 없었다.. 싶습니다.’
주실 때도 어려움을 아시고 처음부터 간단한 거 주신 거 같은데욤 ㅎ
뒤늦게 부랴부랴 해야해서 걱정했는데 다행히 딸깍만 하면돼서 ㅎㅎ
강의시간 때처럼 이미지가 잘 안먹어서
한 번에 이미지를 인식 못해서 아래와 같이 GPT에게 물었었고요.
(사실은 오류가 뭘 뜻하는지도 몰랐어서 물어본 게 크긴한데 강의보면서 하니까
끄덕끄덕했습니다 ㅎ,.ㅎ)
그래서 암튼 이렇게 물어봤었고
During handling of the above exception, another exception occurred: Traceback (most recent call last): File "c:\Users\A-josh\Desktop\Gpters\pyautoGUIprac.py", line 9, in <module> location = pyautogui.locateOnScreen('news.png') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyautogui\__init__.py", line 174, in wrapper raise ImageNotFoundException # Raise PyAutoGUI's ImageNotFoundException. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pyautogui.ImageNotFoundException --- 이렇게 오류가 나는데 뭐가 문제인지, 어떻게 해결해야 하는지 알려줘
ChatGPT
ChatGPT
해당 오류는 pyautogui.locateOnScreen() 메서드가 지정된 이미지를 찾지 못할 때 발생합니다. 이 문제를 해결하기 위해 몇 가 지 단계를 따를 수 있습니다:
이미지 경로 확인: 먼저 locateOnScreen() 메서드에 전달된 이미지 파일이 올바른 경로에 있는지 확인하세요. 오류 메시지에서 'news.png'라는 이미지를 찾을 수 없다고 나와있는데, 해당 이미지가 프로젝트 디렉토리에 있는지 확인하세요.
이미지 검색 조건 조정: 때로는 정확한 이미지를 찾지 못할 수 있습니다. locateOnScreen() 메서드에는 몇 가지 옵션을 추가하여 이미지 검색을 더욱 정확하게 할 수 있습니다. 예를 들어, confidence 매개변수를 조정하여 이미지 일치의 정확도를 변경할 수 있습니다.
이미지의 크기 또는 해상도 확인: 이미지가 화면에서 너무 작거나 너무 크면 인식에 문제가 발생할 수 있습니다. 이미지의 크기를 조정하여 다시 시도해 보세요.
PyAutoGUI 버전 확인: 가끔씩 오래된 PyAutoGUI 버전에서는 이미지 인식에 문제가 발생할 수 있습니다. 최신 버전을 설치하고 다시 시도해 보세요.
이미지 자체 수정: 이미지의 밝기, 대조 또는 색상을 수정하여 인식률을 높일 수 있습니다.
이러한 단계를 따라도 문제가 해결되지 않으면 추가적인 디버깅이 필요할 수 있습니다.
류정
You
Traceback (most recent call last): File "c:\Users\A-josh\Desktop\Gpters\pyautoGUIprac.py", line 9, in <module> location = pyautogui.locateOnScreen('hondaad.jpg') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyautogui\__init__.py", line 172, in wrapper return wrappedFunction(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyautogui\__init__.py", line 210, in locateOnScreen return pyscreeze.locateOnScreen(*args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyscreeze\__init__.py", line 405, in locateOnScreen retVal = locate(image, screenshotIm, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyscreeze\__init__.py", line 383, in locate points = tuple(locateAll(needleImage, haystackImage, **kwargs)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyscreeze\__init__.py", line 282, in locateAllpillow needleFileObj = open(needleImage, 'rb') ^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: 'hondaad.jpg' --- 다른 이미지로 교체해봤는데 이번엔 이렇게 오류가 났어 뭐가 문제인지, 해결방법은 뭔지 알려줄래?
ChatGPT
ChatGPT
이번에도 마찬가지로 이미지 파일을 찾을 수 없어서 오류가 발생했습니다. 에러 메시지에서는 'hondaad.jpg'라는 파일을 찾을 수 없다고 나와 있습니다.
해결책으로는 다음과 같은 단계를 따를 수 있습니다:
이미지 경로 확인: 먼저 hondaad.jpg 파일이 실제로 지정된 경로에 있는지 확인하세요. 파일 이름 및 경로가 정확한지 다시 한 번 확인하십시오.
파일 확장자 확인: 파일 이름이 '.jpg'로 끝나므로 해당 파일이 JPEG 형식의 이미지인지 확인하세요. 파일이 적절한 이미지 형식인지 확인하세요.
파일명 대소문자 구분 확인: 파일 시스템이 대소문자를 구분하는 경우가 있으므로 파일명이 정확하게 일치하는지 확인하세요.
이미지 파일을 로드할 수 있는 권한 확인: 프로그램이 이미지 파일을 로드할 수 있는 권한이 있는지 확인하세요. 때로는 파일 또는 디렉토리의 권한 문제로 인해 파일을 읽을 수 없는 경우가 있습니다.
파일이 다른 폴더에 있는 경우 경로 수정: 이미지 파일이 프로젝트 디렉토리가 아닌 다른 곳에 있는 경우 전체 경로를 제공하거나 올바른 상대 경로를 사용하여 파일을 지정하세요.
위의 단계를 따라 해결되지 않으면 추가적인 디버깅이 필요할 수 있습니다.
결국에 이미지가 분명하고? 선명하고 심플한 게 좋겠다 생각해서 그냥 로그인 이미지 넣어서
과제는 ‘딸깍’ 수행해 봤습니다.
혹시나 시간 안에 못할까봐 걱정했는데 저 같은 왕초보에게 효능감을 주셔서 감사합니다ㅋ
그동안 못 따라가고 있어서 나름의 맘고생이 ㄷㄷ
다른 것도 벌여 논 게 있어 가지구 그것도 하고 이것도 하고 할려니 아무튼 그랬습니다.
그럼에도 킵고잉님이나 쿠리님 대단하시고 다른 겨울님이나 다른 분들도 대단하시고
그랬습니다.
제가 카톡이나 이런 걸 잘 확인을 못해서 멀티가 안되고 ㅎㅎ
치려니 지났더라구요 타이밍이 약간
목표인 웹페이지를 html로 문구 2개 출력해보고 끝난상태지만 아무튼 감사했습니다.
10기 캠프를 잘 활용하지 못한 것이 못내 아쉽기도 하고요.
결과물이나 성과도는 낮았어도 나름 으샤으샤 했는데요
(못하시는 분들도 계셔 주셔서 좋았습니다 ㅋㅋ 실패담과 공감.. 정말입니다. 잘하시 는 분들도 계셔서 좋았습니다. 배울게 있었고요.)
아무튼 이번 과제는 딸깍해서 끝냈습니다.
감사합니다. 이따 수업시간 때 여러분들의 성과를 또 볼 수 있겠네요.
import pyautogui
import time
# 사용자가 준비할 시간을 줍니다.print("5초 후에 프로그램이 시작됩니다.")time.sleep(5)
# 화면에서 아이콘을 찾습니다.location = pyautogui.locateOnScreen('naverlogin.png')
if location: # 아이콘의 중심으로 마우스를 이동합니다. center = pyautogui.center(location) pyautogui.moveTo(center)
# 마우스 클릭을 실행합니다. pyautogui.click() print("아이콘이 클릭되었습니다!")else: print("아이콘을 찾을 수 없습니다. 'icon.png' 파일을 확인하세요.")