• 후입선출(Last In First Out,LIFO) 원칙의 데이터 구조

    주로 순서를 거꾸로 밟아가는 뒤로가기(되돌리기)등에서 사용된다.

    주요 연산

    1. push: 맨 위(top)에 데이터를 추가
    2. pop: 맨 위에 데이터를 제거하고 반환
    3. peek: 맨 위 데이터의 내용만 확인하기
  • 선입선출(First In First Out,FIFO) 원칙의 데이터 구조

    주로 먼저 입력된 것이 먼저 처리되어야 하는 대기열 (CPU, 키보드, 프린터 등)에 사용된다.

    주요 연산

    1. 인큐(Enqueue): 맨 뒤에 데이터 추가하기
    2. 데큐(Dequeue): 맨 앞의 데이터 제거하고 반환하기
  • 현재 운영체제에 접근하여 파일(디렉토리)을 조작하거나, 시스템 정보를 가져오거나, 프로세스를 관리하는 등의 기능을 수행하는 라이브러리

    설치

    파이썬 표준 라이브러리로, 별도 설치는 필요하지 않음

    사용방법
    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] 파이썬파일명
    • -w : 콘솔창이 출력되지 않도록 함
    • -F : 하나의 exe파일로 만듬
    • -n <프로그램명>: 프로그램명 지정
    • –icon <아이콘파일>: 프로그램 아이콘 적용

    완료되면 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

  • 초기 셋팅

    기초 사용법

    • 새로운 저장소 만들기 – git init
    • 저장소 연결 – git remote add origin 저장소경로 (git remove -v로 확인 가능)
    • 저장소 가져오기 – git clone [저장소경로] (저장소 연결을 동시에 하는 경우)
    • 변경사항 확인 – git status
    • 인덱싱 – git add 파일명 (전체파일은 *)
    • 커밋 – git commit -m “설명”
    • 원격저장소에 반영 – git push origin master (master는 상황에 따라 내가 원하는 branch로..)
    • 브렌치 생성 – git checkout -b 브렌치명
    • 브렌치 변경 – git checkout 브렌치명
    • 브렌치 삭제 – git branch -d 브렌치명
    • 원격 변경 사항 가져오기 – git fetch
    • 로컬을 원격 내용으로 최신화하기 – git pull
    • 다른 branch와 병합 – git merge 브렌치명
  • 아.. 그..그..그… 뭐였지..? 할 때, 한 눈에 찾아볼 수 있도록 간략하게만 작성되었습니다. 각각의 자세한 사용방법은 개별 문서를 찾아보시는 것을 권장드립니다.

    • display – 화면에 보여지는 방식
      • block, inline, inline-block, none
      • grid, flex
    • position – 위치 지정하기
      • static, relative, absolute, fixed, sticky
    • float – 특정 위치에 띄우기(부유시키기)
      • none, left, right
    • width – 너비
      • min-width, max-width
      • px, em, rem, %
    • height – 높이
      • min-height, maxheight
      • px, em, rem, vh
    • margin – 외부여백
      • margin: 10px; (상하좌우 10px)
      • margin: 10px 20px; (상하 10px, 좌우 20px)
      • margin: 10px 20px 30px; (상 10px, 좌우 20px, 하 30px)
      • margin: 10px 20px 30px 40px; (상 10px, 우 20px, 하 30px, 좌 40px) – 순서주의
      • margin-top, margin-left, margin-right, magin-bottom
    • padding – 내부여백
      • margin 과 적용방식 같음
      • padding-top, padding-left, padding-right, padding-bottom
    • border – 테두리
      • border: 1px solid black; (순서 상관없음)
      • border-width, border-style, border-color, border-radius
      • border-top, border-left, border-right, border-bottom
      • border-top-color, border-left-width, border-top-left-radius …
      • style: none, solid, dotted, dashed, double, groove, ridge
    • box-sizing – size에서 padding 과 border의 포함여부 결정
      • content-box, border-box
    • font – 글자 관련
      • font-family: “Nanum Gothic”, “Malgun Gothic”, sans-serif;
      • font-size: 16px; (1.2rem)
      • font-weight: 600; (normal / bold)
      • fint-style: normal; (italic)
      • line-height: 24px;
      • color: red; (#ff0000)
      • text-align: center;
      • text-decoration: underline;
    • background – 배경
      • background-color: lightgray;
      • background-image: url(“https://&#8230;.”)
      • background-reapeat: no-reapeat;
      • background-position: center;
      • background-size: auto; (contain, cover, 100% 100%)
      • background-attachment: scroll; (fixed)
    • 미디어 쿼리
      • @media 미디어 유형 and (조건문){조건이 참일때 적용할 css}
      • ex) @media screen and (max-width: 768px){.div{width: 100%}}
    1. 네트워크 연결 창에서 Shift + F10 을 눌러 커맨드창을 띄워준다.
    2. 커맨드 창에 oobe\bypassnro 입력하면 재부팅 된다.
    3. 네트워크 연결 창에 “인터넷이 연결되어있지 않음” 옵션을 선택
    4. “제한된 설치로 계속” 선택하여 진행한다.
    • int(“10”) = 10
    • int(10.99999) = 10
    • int(“10”,2) = 2
      • 2진수 “10”은 10진수로 2