SGS에서 레포트를 받으면 모든 파일명이 SGS의 내부 식별 번호로 되어 있습니다. 저희는 보통 한 분기에 약 200개 이상의 성적서를 받다 보니, 이것들을 시료 이름과 시험 내용에 따라 일일이 분류하는 것이 여간 귀찮은 작업이 아닌데요. 이때 우리의 파이썬을 써먹으면 매우 편리합니다. 아래와 같이 SGS 번호로 된 PDF 파일명을 모두 내용에 따라서 시험 이름 및 시료 이름으로 변경하는 것입니다. 아래는 PDF 파일을 실행한 모습인데, Product Name이라고 적혀있는 내용을 자동으로 파일명에 들어가게 하고자 합니다. 순서는 간단합니다. (1) PDF의 내용을 읽는다 (2) 시험 방법과 시료 이름을 찾는다 (3) 이름을 변경한다 이번 게시물에서는 코드만 간단히 보여드리는 게 아니라, 처음 시작부터 ..
개요 가끔 티스토리 게시물 중 삽입된 사진이 없으면 마땅한 썸네일이 없는 경우가 있습니다. 파이썬으로 아래와 같은 썸네일을 간단히 만드는 코드를 작성하여, 앞으로 이용해보고자 합니다. 이미지 프로세스에 매우 많이 사용하는 Pillow 라이브러리를 이용하여 간단히 작업을 진행할 수 있습니다. 준비물 : - Pillow (없다면 커맨드 라인에서 'pip install Pillow' 로 설치) - 폰트 : 네이버 나눔 스퀘어 hangeul.naver.com/2017/nanum) (다른 거 써도 상관 없음) 코드1 # coding: utf-8 from PIL import Image, ImageDraw, ImageFont import textwrap astr = "티스토리 썸네일 이미지 만들기" para = te..
예외 처리는 에러가 발생하더라도 스크립트의 실행을 중단시키지 않고 계속 실행하고자 할 때 사용합니다. 1. Try Except 구문 사용하기 try: 실행할 코드 except: 예외가 발생했을 때 처리하는 코드 예시 try: x = int(input('나눌 숫자를 입력하세요: ')) y = 10 / x print(y) except: # 예외가 발생했을 때 실행됨 print('예외가 발생했습니다.') x에 0을 입력하면 10/0이 되어 오류가 발생하지만, 여기서는 except를 사용하여 해당 오류를 처리 특정 예외만 처리하기 y = [10, 20, 30] try: index, x = map(int, input('인덱스와 나눌 숫자를 입력하세요: ').split()) print(y[index] / x) ex..
1. 개요 파이썬을 이용하여 아웃룩(Outlook)으로 이메일을 발송합니다. win32com 모듈로 Outlook Object Model을 이용합니다. Outlook MailItem Object new_Mail이라는 변수에 새로운 이메일을 오브젝트 형태로 불러옵니다. 이 오브젝트를 이용하여 메일을 작성하고 보냅니다. new_Mail = win32com.client.Dispatch("Outlook.Application").CreateItem(0) 사용하는 프로퍼티 new_Mail.To : 메일 수신자 new_Mail.CC : 참조 new_Mail.Subject : 메일 제목 new_Mail.HTMLBody : 메일 내용(HTML 형태) new_Mail.Attachment : 첨부 파일 -> Attachme..
1. 개요 일을 하다보면 암호가 걸려있는 PDF 파일을 수정해야 할 일이 있습니다. 물론 서명을 위조하거나, 암호를 알아내는 것은 불가능하지만, 파일 내용을 그대로 복사하여 내용이 동일한 새로운 PDF 파일을 생성하는 방법으로 잠금을 해제하여 사용할 수 있습니다. (읽기가 막혀있는 파일은 안 됩니다.) 다시 말해서, 암호가 걸려있는 파일과 동일한 내용의 새로운 파일을 생성하는 것입니다. 2. 방법 pikepdf(pypi.org/project/pikepdf/)를 이용합니다. 준비물 1) pikepdf를 설치합니다. 커맨드창에서 입력 pip install pikepdf 2) 테스트를 위한 PDF 파일을 준비합니다. 코드 순서 1) PDF 파일을 열고, 2) 내용을 복사하고 3)새로운 파일로 저장합니다. 과거..
앞의 게시물에 이어, 조건 검색 관련 함수들을 Qt Designer로 만든 UI에 연결시키도록 하겠습니다. 1편 : kminito.tistory.com/36 2편에서 다룰 내용 - UI와 함수 연결 - 로그창 작동 - 텔레그램 알림 구현 참고 : 조건 검색 실행은 각 조건식별로 1분에 5회의 검색 제한이 있습니다. 테스트를 하다 보면 같은 조건식을 1분에 5회 이상 실행하게 될 경우가 있으므로, 조건 검색이 실패할 경우 잠시 기다렸다가 1분이 지나서 다시 실행하시면 됩니다. 4. UI와 함수 연결하기 1) 콤보박스에 조건 검색식 불러오기 위의 PyTrader 화면의 조건 검색식을 고르는 ComboBox에 사용자의 조건식을 불러오려고 합니다. 해당 콤보박스의 Object Name은 "comboBox_con..
조대표님의 위키독스 '파이썬으로 배우는 알고리즘 트레이딩' 프로그램에 조건검색 기능을 추가하여, 조건검색 해당 종목이 뜨면 휴대폰 텔레그램으로 알림을 받는 프로그램을 만들고자 합니다. 증권사는 키움입니다. 따라서 키움API와 PyQt에 대한 기본적인 이해를 필요로 합니다. 필요할 경우 위키독스(wikidocs.net/book/110)에서 기본을 익히시면 됩니다. 전체 코드 링크는 맨 아래에 있습니다. 작동 영상 일부러 실시간으로 종목의 편입/이탈을 반복하는 조건식을 선택하여 테스트했습니다. 1. 개요 키움증권의 조건검색 기능을 이용하여, 해당 조건을 만족하는 종목이 포착되었을 경우 텔레그램 메시지를 발송토록 하고자 합니다. 키움증권 OpenAPI에서 제공하는 조건검색 기능은 영웅문(HTS)에서 작성한 조..
키움증권은 서버 과부화 및 API 악용을 막기 위하여 API 사용 조회 및 주문 제한이 있습니다. 현재 공식적으로는 초당 5회 미만으로 제한을 두고 있으며, 추가적인 제한은 시장 상황과 서버 상황에 따라 유동적입니다. 1시간 이상 프로그램이 작동하며 많은 조회 및 주문이 이루어진다는 가정 하에, 3.6초의 시간간격을 두고 TR요청 및 주문을 하는 것이 일반적입니다. (작성일 2020년 10월 31일 기준) 3.6초 간격 : 1시간에 1,000회 -> 정상 작동 3.5초 간격 : 1시간에 1,028회 -> 조회 차단 발생 또한 키움에서는 시세/호가/조건검색/주문체결 등을 모두 실시간데이터로 서비스하고 있으니, 과도한 조회요청 대신에 실시간 이벤트와 실시간 데이터를 사용할 것을 권고하고 있습니다. 그리고 주..
리스트를 특정 크기의 리스트로 분할하기 아래의 예제에서는 크기가 9인 리스트를 4개씩 나누기 한 것 (n=4) 코드 my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] # How many elements each list should have n = 4 # using list comprehension result1 = [my_list[i * n:(i + 1) * n] for i in range((len(my_list) - 1 + n) // n )] print (result1) 결과 List Comprehensin에 대한 설명 result1 = [my_list[i*n:(i+1)*n] for i in range((len(my_list) - 1 + n) // n )] 1) 먼저 몇 개의 리스트..
개선된 내용의 게시물을 작성 중에 있습니다. 아래의 링크 참조 부탁드립니다. (2021/09/25) 파이썬으로 SRT 예매 프로그램 만들기 시리즈 https://kminito.tistory.com/79 [Python] 파이썬으로 SRT 예매 프로그램 만들기 (1) 기능 구현하기 안녕하세요? 과거에 처음 코딩을 배우던 시절 짠 허접한 SRT 매진 표 예매 게시물을 올렸었는데요, 이번에 코드를 새로 짜는 김에 파이썬 초보분들에게 도움이 될 수 있도록 어떤 식으로 접근하 kminito.tistory.com 파이썬으로 SRT 표 예매 과정을 자동화 한 것입니다. 웹에서의 동작은 셀레늄을 이용했습니다. 아래 내용을 보시면 아시겠지만 단순히 사람이 하는 반복 작업을 파이썬을 통해 자동화 한 것이라 한계가 분명합니다..
텔레그램은 API를 제공하며, 파이썬에서 python-telegram-bot 라는 라이브러리를 이용하면 정말 간편하게 텔레그램 봇을 통하여 메시지를 발송할 수 있습니다. 프로그램 돌리면서, 휴대폰 텔레그램 앱으로 메시지를 받을 수 있다는 것이 정말 큰 장점입니다. 사용법 또한 매우매우 간단합니다. 저는 아래와 같은 곳에 사용중입니다. (각 항목 모두 포스팅 예정) 1) 주식 프로그램에서 조건검색식 종목 신호가 오면 텔레그램으로 메시지 발송 2) 기차표 예매 매크로를 돌려서, 예약 성공시 메시지 발송 3) 매일 특정 홈페이지를 스크랩하는 프로그램을 돌려놓았을 경우, 스크랩 성공시 해당 내용 메시지 발송 사용 방법은 아래와 같은 순서로 진행됩니다. 1) python-telegram-bot 설치 2) 텔레그램..
수시로 추가함. 출처는 주로 - 레벨업 파이썬 (https://wikidocs.net/83506) - 파이썬 코딩 도장 (https://dojang.io/mod/page/view.php?id=2427) - 점프투파이썬 (wikidocs.net/book/1) 가변인자 사용 예시 def foo(*args): print(args) foo(1, 2, 3) foo(1, 2, 3, 4) def foo(**kwargs): print(kwargs) foo(a=1, b=2, c=3) def foo(*args, **kwargs): print(args) print(kwargs) foo(1, 2, 3, a=1, b=1, c=2) 데코레이터 사용 예시 def outer(out1): def inner(in1): print("in..