파이썬 프로그래밍으로 지루한 작업 자동화하기 학습중..



import pyautogui, time, sys, image

# print(pyautogui.size()) ## monitor 해상도 읽어오는 함수
#
# for i in range(10) : ## pyautogui.FAILSAFE 기능을 False로 하면 마우스 제어가 안되어 위험하므로 Default로 두자.
# pyautogui.moveRel(100, 0, duration = 0.25)
# pyautogui.moveRel(0, 100, duration = 0.25)
# pyautogui.moveRel(-100, 0, duration = 0.25)
# pyautogui.moveRel(0, -100, duration = 0.25)

# print(pyautogui.position()) ## 마우스의 좌표를 가져오는 함수

# print("ctrl-c to quit")
# try :
# while True :
# x, y = pyautogui.position()
# positionStr = 'x: ' + str(x).rjust(4) + ' y: ' + str(y).rjust(4) ## rjust 메소드는 출력문자를 오른쪽 정렬
# print(positionStr, end ='') ## end 키워드 매개변수는 print()가 한줄을 출력할 때 끝에 줄바꿈 문자를 덧붙이는 것을 막는다.
# ## '\b' 문자열은 최근 출력된 positionStr 문자열을 지우는 효과이며 하앙 flush = True로 전달해야 한다.
# print('\b' * len(positionStr), end='', flush=True)
# except KeyboardInterrupt :
# print("\nDone.")

## pyautogui.click() = pyautiogui.mouseDown() + pyautugui.mouseUp()
## pyautogui.dragTo(), pyautogui.dragRel() = mouse moveTo(), moveRel()과 같은 기능

# time.sleep(5)
# pyautogui.click()
# distance = 200
# while distance > 0 :
# pyautogui.dragRel(distance, 0, duration=0.1)
# distance = distance - 10
# pyautogui.dragRel(0, distance, duration=0.1)
# pyautogui.dragRel(-distance, 0, duration=0.1)
# distance = distance - 10
# pyautogui.dragRel(0, -distance, duration=0.1)

import pyperclip, image
# numbers = ''
# for i in range(200) :
# numbers = numbers + str(i) + '\n'
# pyperclip.copy(numbers) ## 클립보드와 같은 역할, for loop에서 만들어진 문자열들이 이 명령어로 copy. 메모장 붙여넣기로 확인
# time.sleep(5)
# pyautogui.scroll(-300) ## +/-로 방향 설정해보도록
# RGBA A는 투명도 설정 알파값
# im = pyautogui.screenshot()
# print(im.getpixel((0, 0)))
# print(im.getpixel((50, 200)))
# print(pyautogui.pixelMatchesColor(50,200,(255,255,255))) ## 스크린샷의 특정 좌표의 색깔을 비교해서 알려주는 메소드
# print(pyautogui.pixelMatchesColor(50,200,(251,251,251)))

# print("ctrl-c to quit")
# try :
# while True :
# x, y = pyautogui.position()
# positionStr = 'x: ' + str(x).rjust(4) + ' y: ' + str(y).rjust(4) ## rjust 메소드는 출력문자를 오른쪽 정렬
# ## end 키워드 매개변수는 print()가 한줄을 출력할 때 끝에 줄바꿈 문자를 덧붙이는 것을 막는다.
# ## '\b' 문자열은 최근 출력된 positionStr 문자열을 지우는 효과이며 하앙 flush = True로 전달해야 한다.
# pixelColor = pyautogui.screenshot().getpixel((x, y))
# positionStr += ' RGB: (' + str(pixelColor[0]).rjust(3)
# positionStr += ', ' + str(pixelColor[1]).rjust(3)
# positionStr += ', ' + str(pixelColor[2]).rjust(3) + ')'
# print(positionStr, end='')
# print('\b' * len(positionStr), end='', flush=True)
# except KeyboardInterrupt :
# print("\nDone.")




PyAutoGUI 함수 정리


moveTo(x, y) : 주어진 x 및 y 좌표로 마우스 커서를 옮긴다

moveRel(xOffset, yOffset) : 현재 위치를 기준으로 마우스 커서를 지정한 픽셀만큼 옮긴다.

dragTo(x, y) : 왼쪽 버튼을 누른 상태에서 마우스 커서를 옮긴다.

dragRel(xOffset, yOffset) : 왼쪽 버튼을 누른 상태에서 마우스 커서를 현재 위치를 기준으로 옮긴다.

click(x, y, button) : 클릭을 시뮬레이션한다.(왼쪽 버튼이 기본값)

rightclick() : 오른쪽 버튼 클릭을 시뮬레이션한다.

middleclick() : 가운데 버튼 클릭을 시뮬레이션한다.

doubleclick() : 왼쪽 버튼 더블 클릭을 시뮬레이션한다.

mouseDown(x, y, button) : 지정한 버튼을  x, y 위치에서 누르는 일을 시뮬레이션한다.

mouseUp(x, y, button) : 지정한 버튼을 x, y 위치에서 놓는 일을 시뮬레이션한다.

scroll(units) : 휠스크롤을 시뮬레이션한다. 매개변수가 양수이면 위로, 음수이면 아래로 스크롤한다.

typewrite(message) : 지정한 메시지 문자열의 글자를 입력한다.

typewrite([key1, key2, key3]) : 지정한 키보드 키 문자열을 입력한다.

press(key) : 지정한 키보드 키 문자열에 해당하는 키를 누른다.

keyDown(key) : 지정한 키보드 키를 누르는 일을 시뮬레이션한다.

keyUp(key) : 지정한 키보드 키를 놓는 일을 시뮬레이션한다.

hotkey([key1, key2, key3]) : 지정한 키보드 키를 순서대로 누른 다음 역순으로 놓는 일을 시뮬레이션한다.

screenshot() : 스크린샷을 Image 객체로 돌려준다.



키보드 키 문자열


'a', 'b', 'c', 'd',.......

'enter'

'esc'

'shiftleft' 'shiftright'

'altleft', 'altright'

'ctrlleft', 'ctrlright'

'tab'

'backspace', 'delete'

'pageup', 'pagedown'

'home', 'end'

'up', 'down', 'left', 'right'

'f1', 'f2', 'f3',.....

'volumemute', 'volumeup', 'volumedown'

'pause'

'capslock', 'numlock', 'scroollock'

'inser'

'printscreen'

'winleft', 'winright'

'command' -> OS X용

'option' -> OS X용



파이썬 프로그래밍으로 지루한 작업 자동화하기 학습중..



import subprocess
import os, time

for i in range(5) :
calcProc = subprocess.Popen('C:\Windows\System32\calc.exe')
time.sleep(1) -> ## 프로그램 실행중이면 poll()에서 None을 돌려주므로 in process,
# 프로그램 실행이 완료되면 poll()은 숫자를 돌려주므로 terminated. time sleep 걸어주면 terminated 실행됨.
if calcProc.poll() == None :
print("in process")
else :
print("terminated")
if calcProc.poll() == None :
calcProc.wait()
print(calcProc.poll())
else :
print("process terminated")

subprocess.Popen(['C:\\Windows\\System32\\notepad.exe', 'C:\\hello.txt'])
file = open('hello.txt', 'w')
file.write('Hello World!')
file.close()
subprocess.Popen(['start', 'hello.txt'], shell = False) ## 대화형 쉘에 입력하면서 시스템에 따라 'start', 'open', 'see' 전달

timeleft = 5
while timeleft > 0 :
print(timeleft)
time.sleep(1)
timeleft = timeleft - 1
subprocess.Popen(['start', 'hello.txt'], shell = False)
subprocess.Popen(['start', 'alarm.wav'], shell = False)

import os, subprocess
# cwd = os.getcwd() ## 현재작업 경로 얻어오기
# proc = subprocess.Popen(["ls" ,"hello.txt"], cwd=cwd, stdout=subprocess.PIPE)
# output = proc.stdout.read().decode("utf8")
print(os.listdir('../autobuy'))
subprocess.Popen(['start', '../autobuy/hello.txt'], shell = False)



'파이썬(PYTHON)' 카테고리의 다른 글

os 모듈 파일 읽고 쓰기 활용 연습  (0) 2020.08.14
pyautogui 모듈 활용 연습  (0) 2020.08.08
Thread 모듈 활용 연습  (0) 2020.08.05
Time 모듈 연습  (0) 2020.08.04
DataFrame 연습  (0) 2020.08.04

파이썬 프로그래밍으로 지루한 작업 자동화하기 학습중..


import time, threading

print('start of game')
def takeaNap() :
i = 0
while True :
time.sleep(1)
print('wake up! : #{}'.format(i))
i += 1
if input() :
print('key')
continue
else :
print('else')
pass
break
threadObj = threading.Thread(target = takeaNap)
threadObj.start()
print('end of game')

threadobj2 = threading.Thread(target = print, args = ['Cats', 'Dogs', 'Frogs'], kwargs = {'sep' : '&'})
# thread에 매개변수 전달할 때는 args kwargs를 사용해야 한다. print(A)형태가 아닌 print 형태로 전달
# https://nostarch.com/automatestuff2 참고 사이트
# https://automatetheboringstuff.com/ website 참고
threadobj2.start()

#! python3
# downloadXkcd.py - Downloads every single XKCD comic.

import requests, os, bs4, threading, sys

os.makedirs('xkcd', exist_ok=True) # store comics in ./xkcd

print("Start!!")
def downloadXkcd(startComic, endComic) :
for urlNumber in range(startComic, endComic) :
print('download pages https://xkcd.com/%s...' %(urlNumber))
res = requests.get('https://xkcd.com/%s' % (urlNumber))
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, features = 'lxml')
comicElem = soup.select('#comic img')
if comicElem ==[] :
print('could not find comic image')
else :
comicUrl = 'https:' + comicElem[0].get('src')
print(comicUrl)
print('downloading img %s...' % (comicUrl))
res = requests.get(comicUrl)
res.raise_for_status()
imageFile = open(os.path.join('xkcd', os.path.basename(comicUrl)), 'wb')
for chunk in res.iter_content(100000) :
imageFile.write(chunk)
imageFile.close()
downloadThreadS = []
for i in range(1, 10, 1) :
downloadThread = threading.Thread(target = downloadXkcd, args = (i, i + 99))
downloadThreadS.append(downloadThread)
downloadThread.start()
for downloadThread in downloadThreadS :
downloadThread.join() #스레드가 종료될 때까지는 다음 코드 실행을 막아준다.
print('done')



'파이썬(PYTHON)' 카테고리의 다른 글

pyautogui 모듈 활용 연습  (0) 2020.08.08
subprocess 모듈 활용 연습  (0) 2020.08.08
Time 모듈 연습  (0) 2020.08.04
DataFrame 연습  (0) 2020.08.04
PyQt5를 이용한 기본 UI 구성  (0) 2020.08.03

+ Recent posts