후입선출(Last In First Out,LIFO) 원칙의 데이터 구조
주로 순서를 거꾸로 밟아가는 뒤로가기(되돌리기)등에서 사용된다.
주요 연산
- push: 맨 위(top)에 데이터를 추가
- pop: 맨 위에 데이터를 제거하고 반환
- peek: 맨 위 데이터의 내용만 확인하기
후입선출(Last In First Out,LIFO) 원칙의 데이터 구조
주로 순서를 거꾸로 밟아가는 뒤로가기(되돌리기)등에서 사용된다.
주요 연산
선입선출(First In First Out,FIFO) 원칙의 데이터 구조
주로 먼저 입력된 것이 먼저 처리되어야 하는 대기열 (CPU, 키보드, 프린터 등)에 사용된다.
주요 연산
현재 운영체제에 접근하여 파일(디렉토리)을 조작하거나, 시스템 정보를 가져오거나, 프로세스를 관리하는 등의 기능을 수행하는 라이브러리
파이썬 표준 라이브러리로, 별도 설치는 필요하지 않음
import os # 아래부터 생략
os.name() # 운영체제 종류 반환: posix - 리눅스와 맥, nt - 윈도우 등
os.system(command) # 커맨드창에서 사용하는 명령어를 직접 사용
os.path.join(path1, path2 [,path3, ...]) # 경로 합치기(윈도우는 \. 리눅스는 / 사용)
os.path.exists(경로) # 경로 존재여부 확인하여 True/False 반환
os.getcwd() # 현재 작업 디렉토리 확인
os.chdir(경로) # 작업 디렉토리 변경
os.listdir(경로) # 경로 내의 파일과 폴더 목록을 list로 반환
os.mkdir(폴더명) # 새 디렉토리 생성
os.makedirs(폴더명) # 새 디렉토리 생성(중간경로까지 모두 생성)
os.rmdir(폴더명) # 해당 디렉토리 삭제 (비어있어야 삭제 가능)
os.rename(old, new) # 파일(디렉토리) 이름 변경
os.remove(파일명) # 파일 삭제
# 원하는 폴더가 없으면 새 폴더 만들기
dir_name = 'test' # 만드려는 폴더 명
current_dir = os.getcw() # 현재 위치
full_path = os.path.join(current_dir,dir_name) # 만드려는 폴더의 절대경로
if not os.path.exists(full_path): # 폴더가 존재하지 않으면
os.makedirs(full_path) # 폴더 생성
# os 라이브러리는 아니지만, 파일을 다루는 내장함수
open(파일명, 모드) # 파일 열기, 모드(r읽기,w쓰기,a추가,+읽고쓰기,b바이너리)
read() # 파일 전체 읽기 - readline():한 줄 읽기, readlines():줄마다 리스트 반환
write(내용) # 파일 쓰기(파일이 쓰기 가능 모드로 열려있어야 함)
close() # 파일 닫기
# 예전엔 open한 객체를 이용해서 다루었지만, 현재는 안정성과 편리성 등의 이유로 with구문으로 사용하는 것이 권장됨. (with문이 끝나면 자동 close되므로 close를 명시하지 않아도 됨)
# 쓰기
with open('test.txt','w',encoding='utf-8') as f:
f.write('test 문구 입니다.')
# 읽기
try:
with open('test.txt','r',encoding='utf-8') as f:
data = f.read()
print(data)
except FileNotFoundError:
print('파일이 없습니다.')
파이썬으로 엑셀파일을 다루는 라이브러리
코드를 작성하는 시간이 필요하지만, 엑셀로 작업하는것보다 처리속도가 훨씬 빨라, 반복적으로 같은 업무를 처리해야하는 경우 유용하다.
pip install openpyxl
import openpyxl as xl
# 엑셀파일 객체화
newWb = xl.Workbook() # 새로 만들기
loadWb = xl.load_workbook(파일명) # 엑셀파일 불러오기, 파일명은 절대경로를 추천
loadWb.save(파일명) # 저장하기
loadWb.close() # 엑셀파일 닫기 (finally에 사용하는 것을 권장)
# 시트 조작 (객체화된 엑셀 파일은 loadWb로 함)
selectWs = loadWb.active # 활성화된 시트 선택
loadWb.create_sheet(시트명) # 새로운 시트 생성
selectWs = loasWb[시트명] # 시트 선택
selectWs.title = 시트명 # 워크시트의 이름 변경
# 셀 조작 (row와 column은 1부터 시작)
cell = selectWs['A1'] # 셀 객체 (소문자 가능)
cells = selectWs['A1':'C3'] # 범위 지정 튜플 객체
# cells 반환 순서: (('A1','A2','A3'),('B1','B2','B3'),('C1','C2','C3'))
cellGroup = selectWs.column_dimensions.group('H','Z',hidden=True) # H행부터 Z행까지 숨김
cellGroup = selectWs.row_dimensions.group(3,10,hidden=True) # 3열부터 10열까지 숨김
selectWs['A1'].value = 셀내용 # 시트의 A1셀 내용을 변경
selectWs.cell(row,column,value) # 해당 행과 열의 내용 변경(행렬 모두 숫자)
selectWs.cell(row,column).value = 셀내용 # 위와 같은 동작
selectWs.append([A행,B행, ...]) # 마지막 열의 다음 열에 내용을 추가
# 디자인
from openpyxl import styles as ss
# 셀 색칠하기
cell.fill = ss.PatternFill(start_color='FFFFFF', fill_type='solid')
# 테두리그리기
cell.border = ss.Border(top=ss.Side(border_style='medium',color='000000'),
bottom=ss.Side(border_style='medium',color='000000'),
left=ss.Side(border_style='medium',color='000000'),
right=ss.Side(border_style='medium',color='000000'),
)
# 폰트 설정
cell.font = ss.Font(name=폰트명,
size=크기,
color=색상,
bold=True, # 두껍게
italic=False # 기울임체
underline='single', # 밑줄
strike=False # 취소선
)
# 글자 정렬
cell.alignment = ss.Alignment(horizontal='center' # 좌우 가운데 정렬
vertical='center' # 상하 가운데 정렬
indent=1 # 들여쓰기
)
# 셀 크기 변경
selectWs.column_dimensions['A'].width=15 # A행의 너비 변경
selectWs.row_dimensions[1].height=15 # 1열의 높이 변경
코드는 아니지만 진심 맨날 헷갈리는거.. row는 1열이고 column은 A행이다.
이거 적으면서도 또 반대로 적었다..
파이썬 파일을 exe파일로 변환해주는 라이브러리
파이썬이 설치되지 않은 환경에서도 실행이 가능하지만,
제작한 OS와 동일한 OS에서만 사용이 가능하다.
pip install pyinstaller
주의: 이 라이브러리는 커맨드창에서 진행
pyinstaller [options] 파이썬파일명
완료되면 dist 폴더에서 실행파일을 찾을 수 있다.
자동화를 위해 사용되는 라이브러리
주로 어떤 조건이 충족되면 키보드와 마우스를 조작하는 용도로 사용된다.
pip install pyautogui
import – 밑의 설명이나 코드에선 pg로 import된 것을 가정 함
import pyautogui as pg
전체적인 주의 : 입력 장치를 조작할 때, 코드가 실행되어 장치를 조작하는 시간이 필요함. 코드는 1초에 천번 만번도 돌아가지만, 키보드 입력은 천번 만번 할 수 없음.
# 화면 사이즈 얻기
pg.size()
# 이미지의 좌표 구하기(좌상단 좌표)
pg.locateOnScreen(이미지파일) # Box(left=x좌표,right=y좌표,width=너비,height=높이) 반환
# 위 Box객체의 중앙값 구하기
pg.center(pg.locateOnScreen(이미지파일))
# 스크린샷
pg.screenshot(경로,region=(x,y,w,h)) # 좌측 상단 기준의 x좌표,y좌표,너비,높이
# 문자 쓰기(한글 지원하지 않음. 한글은 복사/붙여넣기 방식 활용, 주로 pyperclip 이용)
pg.write(텍스트,interval=0.5) # interval: 속도
# 키보드 누르기(누르고있기)
pg.keyDown(입력키)
# 키보드 떼기
pg.keyUp(입력키)
# 키보드 눌렀다 떼기
pg.press(입력키)
# 동시입력
pg.hotkey('ctrl'+'c') # 복사하기
# 자주쓰는 키들의 이름
< alt, ctrl, shift, backspace, up, down, left, right, enter, space, esc, f1 ~ f12, insert, home, delete, end, pgup, pgdn, tab, win >
# 현재 마우스 포인터 위치 받기
pg.position()
# 이동 (절대좌표)
pg.moveTo(x좌표, y좌표 [,이동시간]) # 이동시간은 초 단위
# 이동 (상대좌표)
pg.moveRel(x좌표, y좌표)
# 클릭
pg.click() # 현재 위치 클릭
pg.rightClick() # 현재 위치 우클릭
pg.doubleClick() # 현재 위치 더블 클릭
pg.click(x좌표, y좌표 [,button='right',clicks=횟수,inteval=간격(초) ]) # 절대좌표
# 드래그
pg.dragTo(x좌표, y좌표 [,duration=이동시간,button='middle']) # 절대좌표
pg.dragRel(x좌표, y좌표 [,duration=이동시간,button='middle']) # 상대좌표
# 메시지 박스
pg.alert(text='내용',title='제목',button='버튼명')
# 선택창
pg.confirm(text='내용',title='제목',buttons=['버튼1','버튼2'..]) # 선택 버튼 반환
# 입력창
pg.prompt(text='내용',title='제목',default='placeholder같은느낌')
# 비밀번호 입력창
pg.password(text='내용',title='제목',default='placeholder같은느낌',mask='*')
# 시간 딜레이
pg.sleep(시간) # time.sleep과 같은 기능
한글 입력을 위한 클립보드: pyperclip
키보드 입력 감지: keyboard
이미지 생성 및 처리: PIL(Python Image Library), NumPy
초기 셋팅
기초 사용법
아.. 그..그..그… 뭐였지..? 할 때, 한 눈에 찾아볼 수 있도록 간략하게만 작성되었습니다. 각각의 자세한 사용방법은 개별 문서를 찾아보시는 것을 권장드립니다.