본문 바로가기

프로그래밍/Python21

Jira label 필드 추가하기 label 필드 레이블 필드를 추가해두면 지라 검색 시 관련된 이슈를 편하게 찾을 수 있다. 티켓의 수가 많을 경우, 레이블을 하나씩 손으로 작성해주기는 귀찮기 때문에 파이썬의 JIRA Package를 활용해서 추가해줬다. from jira import JIRA class JiraAPI: def __init__(self, url:str, auth:set): self.options = {'server': url} self.jira = JIRA(self.options, basic_auth=auth) def set_labels(self, issue_ids:str, labels:list): for issue_id in issue_ids: issue = self.jira.issue(issue_id) for lab.. 2023. 10. 22.
QR-CODE 생성하기 python으로 QR-CODE 생성하려면 아래 qrcode[pil] 패키지를 import 한다. pip install qrcode[pil] 아래 코드를 사용하면 png 형식으로 qrcode를 만들 수 있다. import qrcode img_url = qrcode.make("https://hwan001.co.kr/") img_url.save("qrcode.png") 2023. 3. 29.
[Python] requirements.txt로 패키지 설치하기 requirements.txt 파이썬으로 만든 코드에서 필요한 패키지를 쉽게 표현하기 위해 사용된다. 내부는 아래처럼 필요한 패키지들의 이름을 적어준다. pandas==1.3.5 numpy tensorflow tqdm pandas_datareader finance-datareader beautifulsoup4 yfinance pymongo yahoo_fin requests_html flask flask-cors flask_restx pytest == 을 사용하여 필요한 버전을 명시해줄 수도 있다. 패키지 설치 Python에서 패키지를 설치할 땐 pip 명령어를 사용한다. 위의 파일을 사용하여 패키지를 설치하려면 아래 명령어를 사용하면 된다. pip install -r requirements.txt 하지만.. 2023. 1. 12.
FastAPI FastAPI FastAPI는 Python 3.6이상의 API를 빌드하기 위한 빠르고 현대적인 웹 프레임워크이다. 웹 부분을 위한 Starlette와 데이터 부분을 위한 Pydantic 덕분에 NodeJS와 Go에 대등할 정도로 높은 성능을 가지고 있으며, 빠른 코드 작성이 가능하다. 직관적이고 쉬운 코드로 인해 휴먼 에러가 약 40%(내부 개발팀 테스트 기준) 감소했다고 한다. 또한 API에 완전히 호환되는 개방형 표준을 기반으로 하여 Swagger(OpenAPI)와 json Schema를 지원한다. 개인적으로는 Flask와 문법이 비슷하지만 기본적으로 추가된 기능이 많고 Django보다는 자동화(?)는 덜 되었지만 훨씬 가볍고 빠르다는 느낌을 받았다. 자세한 내용은 아래 공식문서를 참고 https:/.. 2023. 1. 12.
[Python] 디렉토리 내부의 동일한 파일 찾기 이름이나 확장자는 다르지만 사실 동일한 파일이 있다. 이 2개의 파일을 코드로 구분하려면 어떻게 해야 할까? 그리고 디렉토리 내에 그런 파일들이 여러개 있다면 어떻게 찾을 수 있을까? 아래 파일은 get_tickers.py를 복사하여 .txt로 확장자를 바꾼 동일한 파일이다. 2개의 파일이 사실은 같다는 걸 코드로 확인해보자. 파일이 동일하다는 걸 확인하려면 파일 전체를 해쉬로 만들어 값을 비교해보면 된다. 코드로 작성해보자. import hashlib def my_hash(file): with open(file, 'rb') as f: read_data = f.read() hash = hashlib.sha512() hash.update(read_data) hexSHA512 = hash.hexdigest(.. 2022. 12. 10.
[Python] Docstring Docstring 파이썬은 자료형이 명시되지 않기 때문에(언어의 동적 특성) 파이썬에서의 문서화는 매우 중요하다. 문서화를 위해서 파이썬은 docstring이라는 문서화 문자열 기능을 제공하고 """ 문서화 문자열입니다. """ 처럼 표현할 수 있다. docstring은 모듈, 클래스, 함수에 붙일 수 있고 각 객체의 __doc__ 속성에 접근하여 문자열을 가져올 수 있다. 어떤 대상에 docstring을 작성할 지에 따라 적어야하는 내용들도 달라진다. *더 많은 내용은 https://peps.python.org/pep-0257/ 를 참고 모듈 docstring 각 모듈에는 최상위 docstring이 필요하다. docstring의 첫문장은 모듈의 목적을 기술하는 한 문장으로 구성되며 이후는 모듈의 동작을.. 2022. 11. 27.
[Python] OS 모듈 : 디렉토리 전체 탐색하기 (하위 디렉토리까지) 디렉토리 탐색 모든 하위 디렉토리 내부 파일까지 포함된 전체 파일의 목록을 가져오기 위해 파이썬으로 코드를 작성하려고 한다. 그런데 디렉토리(또는 폴더) 내부에 하위 디렉토리가 있다면? 그리고 그 디렉토리 내부에 하위 디렉토리가 있는지 없는지 모른다면? 코드를 어떻게 작성해야 될까? 먼저 파이썬에서 경로를 다루기위해 os 패키지를 import 했다. 그리고 아래와 같은 디렉토리 구조(주석)를 만들어 둔 뒤 하위 디렉토리 어딘가에 FindMe.txt 파일을 숨겨두었다! #Find_TMP #┣━1234 #┗━TEST # ┗━TEST1 import os os 모듈 내부의 메소드들을 사용해서 FindMe.txt 파일이 어디에 있는지 찾아보자. os.listdir() 메소드를 사용하면 입력한 폴더 내부에 존재하는.. 2022. 11. 20.
[python] JWT 모듈 JWT (Json Web Token) JWT는 웹 표준(RFC 7519) 으로 두 개체 사이에서 JSON을 사용하여 정보를 안전성 있게 전달해준다. 웹에서 로그인을 하거나 인증을 받게되면 보통 세션을 사용하여 인증 정보를 기록하는데, JWT는 토큰 내부의 Signature에 해당 정보를 기록한다. JWT를 사용할 경우 인증을 위해 웹 브라우저의 세션 공간을 사용하지 않고 인증 여부를 알 수 있기 때문에 확장성이 좋다. 또한 생성 시 권한을 지정할 수 있어 각 토큰별로 기능을 제어할 수 있고 플랫폼에 종속적이지 않다. JWT의 구조는 Header.Payload.Signature로 나뉘어져 있다. Header는 토큰의 typ(해당 토큰의 타입)과 alg(해싱 알고리즘)을 Payload는 토큰에 담을 정보를 .. 2022. 9. 13.
[Python] Yahoo_fin 모듈 Yahoo_fin 모듈 yahoo_fin은 시가총액, 배당수익률, 종목에 대한 최신 정보를 제공하는 Python 3 패키지이며, 아래 추가 기능들을 제공한다. 손익 계산서/ 대차 대조표/ 현금 흐름표/ 재무 상태 표 보유자 정보 및 분석가 데이터 스크래핑 가상자산(암호화폐) 데이터 현재 거래일 실시간 주가 및 거래 상위 종목 옵션 가격 및 만료 날짜 검색 모듈 수입 캘린더 기록 금융 뉴스 RSS 피드 스크랩 yahoo_fin은 stock_info module, options module 두 가지 모듈로 구성된다. 자세한 옵션이 궁금하면 아래 링크들에서 찾아보자. https://algotrading101.com/learn/yahoo-finance-api-guide/ Yahoo Finance API - A .. 2022. 9. 11.
[Python] Paramiko 모듈 Paramiko 원격 장치에 대한 보안 연결을 위한 모듈로 SSH/ SFTP 연결 시에 사용한다. 만약 설치 중 에러 발생 시 pip를 업그레이드하고 의존성이 있는 라이브러리를 설치해준다. 코드 pip install paramiko # requirements.txt - paramiko import sys import subprocess try: import paramiko except: subprocess.check_call([sys.executable,'-m', 'pip', 'install', '--upgrade', 'pip']) subprocess.check_call([sys.executable,'-m', 'pip', 'install', '-r', 'requirements.txt']) import p.. 2022. 7. 7.
[Python] 데코레이터 (@, Decorator) 파이썬의 데코레이터란? 먼저 Decorate는 '장식하다' 라는 의미가 있고, 따라서 직역하면 '장식자'라는 의미가 된다. (구글 번역기에서는 a person who decorates something. 로 정의되어 있다.) 파이썬에서도 원래 뜻과 비슷한 의미로 사용되는데 @ 기호로 표현 할 수 있으며, 클래스나 메소드를 정의할 때 많이 사용되어 진다. 데코레이터는 직접 정의하여 사용하거나 미리 정의된 내용을 가져와 사용이 가능하다. (정의된 데코레이터는 @property, @classmethod, @staticmethod 등이 있다.) 데코레이터를 작성하면 원본 메소드의 내용을 수정하지 않고 여러 기능을 추가할 수 있게 된다. 메소드(함수)의 실행시간 측정 실행과 종료에 로그 기능 추가 ... 메소드 .. 2022. 3. 21.
[Python] min, max 함수 min (max) 함수 파이썬에서는 여러 대상들(리스트 등) 중 가장 큰 값 또는 가장 작은 값을 구하는 함수가 있다. min, max 함수인데, 아래 방법을 사용하면 이런 함수들을 좀 더 잘(?) 활용할 수 있다. 함수 Parameter에 key=func 주기 list_num = [1, 2, 5, 4, 5, 5, 6, 7, 8, 1] print(max(list_num, key=list_num.count)) # count가 가장 많은 5가 출력 위 코드는 list_num.count를 list_num을 대상으로 실행하고, 해당 값들의 최대값을 출력한다. 따라서 list_num 내부에 가장 개수가 많은 5가 출력된다. 2022. 3. 10.
[python] lambda 표현식 1. lambda 표현식 요약 - 함수를 하나의 식으로 표현한 것으로 다른 함수의 매개변수로 전달이 가능함 - 함수의 이름이 없기 때문에 익명 함수라고도 불림 - 함수 표현식 사용할 경우 속도가 저하된다고 함 (정확하지 않음, 재확인 필요) 2. 사용법 # Case 1. lambda 함수 정의 후 매개변수 전달 function_lambda = lambda x : x + 1 print("result : ", function_lambda(1)) # result : 2 # Case 2. 한번에 매개변수 전달 print("result : ", (lambda x : x + 1)(1)) # result : 2 # Case 3. 외부 변수 활용 y = 1 print("result : ", (lambda x : x +.. 2022. 1. 7.
[python] 실행 시 필요한 패키지 자동 설치 패키지 설치 sys와 subprocess를 활용하여 pip를 호출한다. 아래 코드를 사용할 환경에 python과 pip가 설치되어 있고, 인터넷이 연결되어 있어야 작동한다. import sys import subprocess try: # 없는 모듈 import시 에러 발생 import pandas except: # pip 모듈 업그레이드 subprocess.check_call([sys.executable,'-m', 'pip', 'install', '--upgrade', 'pip']) # 에러 발생한 모듈 설치 subprocess.check_call([sys.executable,'-m', 'pip', 'install', '--upgrade', 'pandas']) # 다시 import import pandas 2022. 1. 1.
[Python] FinanceDataReader 모듈 1. 조회 가능 범위 한국거래소(KRX)에 상장된 주식종목 리스트와 코넥스(비상장)에 있는 주식종목 리스트: 'KRX', 'KOSPI', 'KODAQ', 'KONEX' 글로벌 주식종목 리스트: 'NASDAQ', 'NYSE', 'AMEX' and 'S&P500', 'SSE'(상해), 'SZSE'(심천), 'HKEX'(홍콩), 'TSE'(도쿄) 한국거래소의 상장폐지종목과 관리종목 리스트: 'KRX-DELISTING'(상장폐지종목), 'KRX-ADMINISTRATIVE' (관리종목) 한국, 미국, 일본의 ETF 리스트: 'KR', 'US', 'JP' 주가(KRX): '005930'(삼성전자), '091990'(셀트리온헬스케어) ... 주가(Word wide): 'AAPL', 'AMZN', 'GOOG' 지수: .. 2021. 7. 31.
[Python] pykrx 모듈 1. 개요 pykrx : https://github.com/sharebook-kr/pykrx - KRX 거래소 서버에서 값 받아옴 - 국내 KOSPI, KOSDAQ, KONEX 정보 확인 가능 sharebook-kr/pykrx KRX 주식 정보 스크래핑. Contribute to sharebook-kr/pykrx development by creating an account on GitHub. github.com 2. 설치 pip install pykrx 3. 코드 from pykrx import stock # 원하는 조건의 티커 목록 얻어오기, market 설정 안해줄 경우 기본은 KOSPI # 아래 조건은 2021년 6월 1일 기준의 KOSDAQ 상장사들의 티커를 받아옴 tickers = stock... 2021. 5. 27.
[Python] yfinance 모듈 1. 개요 yfinance : https://pypi.org/project/yfinance/ - API와 티커 값을 사용해서 해외 주가 정보를 받아올 수 있다. - 야후에서 제공 (무료) - 특정 종목(티커)에 해당하는 과거 시점의 모든 데이터를 얻어올 수 있음 - Date, Open, High, Low, Close, Volume, Dividends, Stock Split 정보를 포함 - 애널리스트 평가 정보 가져오기 가능 yfinance Yahoo! Finance market data downloader pypi.org 2. 설치 pip install yfinance 3. 사용 yf_GoogleA = yf.Ticker("GOOGL") # AAPL, TSLA, GOOGL ... yf_Tesla = yf... 2021. 5. 27.
[Python] pycryptodome 모듈 1. 개요 pycryptodome : https://pycryptodome.readthedocs.io/en/latest/ - 파이썬에서 RSA, hash 등 암호화 관련 기능 제공 Welcome to PyCryptodome’s documentation — PyCryptodome 3.9.9 documentation pycryptodome.readthedocs.io 2020. 9. 26.
[Python] 원 나누기 1. 개요 - 돌림판에 사용될 원 그리기 2. 코드 # -*- coding: utf-8 -*- import sys import pygame import math from pygame.locals import * PI = 3.14159265359 R = 200 screenX = 410 screenY = 410 Ox = screenX / 2 Oy = screenY / 2 # 초당 프레임수를 정의 TARGET_FPS = 30 clock = pygame.time.Clock() # 색 정의 BLACK = (0, 0, 0) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) WHITE = (255, 255, 255) # 실수를 더하기 위해서 만들어줌 def myra.. 2016. 10. 3.
[Python] 돌림판 1. 개요 - pygame 라이브러리를 사용하여 윈도우를 그림 - 스페이스 바로 돌림판의 회전과 정지를 정함 - 정지 시 천천히 멈춤 (회전각을 0까지 빼줌) 2. 코드 #-*- coding: utf-8 -*- import sys import pygame from pygame.locals import * import time # 초당 프레임수를 정의 TARGET_FPS = 30 clock = pygame.time.Clock() # 색 정의 BLACK = (0, 0, 0) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) WHITE = (255, 255, 255) # 라이브러리 및 디스플레이 초기화 pygame.init() screen = pygame.d.. 2016. 10. 3.