반응형 PYTHON78 Python - subprocess, Popen, call차이, 작업경로(WorkDirectory) 변경 Python에서 실행중 추가로 프로그램을 실행해야 하는 경우가 발생할 경우 subprocess 모듈을 이용해서 사용할 수 있다. 아마 이모듈을 사용할 때 가장 많은 찾아보게 되는 부분이 Popen과 Call의 차이 그리고 WorkDirectory 변경일 것 같다. 그럼 핵심만 간단히 정리해 보자. Popen 과 call의 차이점 Popen과 call의 가장 큰 차이점은 바로 결과를 기다릴 수 있는 구조인가 이다. 실제로 call은 Popen을 감싼 구조라고 할 수 있다. 즉 Popen으로 실행한 프로그램을 실행을 기다렸다가, 실행이 완료되었을 때 결과를 받을 수 있는 것이 call인것이다. 따라서 실행 결과를 기다릴 필요가 없다면, Popen을 사용하고, 실행 결과를 대기하였다가 확인해야 하는 경우 ca.. 2024. 3. 3. Python - Http Retry 및 while 을 통한 재시도하기 요즘 REST API 참으로 많이 사용된다. 그런데 HTTP 호출을 사용하다보면, 받아주는 서버가 정상적으로 회신을 주지 않는 경우가 있다. 이러한 경우 어떻게 조치하는게 좋을지 Python에서 제공하는 모듈과 일반적인 방법에 대해서 정리해 본다. 1. while 문 사용 가장 일반적으로 사용되는 방식은 while 문을 이용한 특정 조건이 완료될 때 까지 반복 하는 방법이다. while 문 내에 아래와 같이 1이 나올 때까지 실행하는 방식으로 조건이 완료될 때까지 실행할 수 있다.\ import random while True: number = random.randint(0,1000) if number == 1: print('Bingo') break else: print(number) 이를 조금 웹 코드.. 2024. 3. 3. Python - 백그라운드/포그라운드 실행 유무 체크 가끔 스스로 내가 현재 백그라운드 실행인지, 포그라운드 실행인지를 체크해야 하는 경우가 발생한다. 이때 유용하게 사용할 수 있는 것이 바로 os.getpgrp()를 통해 현재 프로세스의 그룹과 제어 터미털의 값이 같으면 포그라운드라고 볼 수 있으며, stdout 파일 핸들을 실패하면 프로세스가 백그라운드에서 실행되고 있다고 알 수 있다. 파일 핸들을 얻을 때 예외로 실패되기 때문에 try/except으로 처리를 해줘야 한다. import os import sys def main(): try: if os.getpgrp() == os.tcgetpgrp(sys.stdout.fileno()): print 'Running in foreground.' else: print 'Running in background... 2024. 3. 3. Python - 함수 주석 설명 팁 프로그램이 길어지고 호출해야 하는 함수가 다양한 파일에 존재한다면, 함수 호출을 위해 도움을 줄 수 있는 설명을 달아주는 것이 효율적이다. 여기서는 함수 설명을 어떻게 달 수 있는지와 알아두면 좋은 3가지 항목에 대해서 설명해 보도록 하겠다. 아래와 같이 test 함수가 있다고 치자. 여기에 설명을 달고자 한다면, 쌍따옴표 3개를 이용해서 감싸고 원하는 설명을 넣으면 된다. def test(a = 'a', b = 1, c = None): """ test 함수입니다. a (str): a value b (int): b value c (str): c value """ pass 이때, 함수에서 사용되는 인자값(아규먼트, 파라메터)도 함께 기입을 해주면 보다 각 인자값들이 어떻게 사용되는지 쉽게 알 수 있기 때문.. 2024. 3. 3. Python - Workday 공휴일, 날짜 인지 확인 업무일자에만 실행해야 하는 경우 어떻게 만들 수 있을까? 필자의 경우 알람을 개발하는데, 공휴일에 알람이 온다면 알람을 받는 사람도 괴롭고, 실제 알람의 효과도 없을 것으로 이를 개선하기 위해서 비즈니스(업무일자)에만 알람을 전달하는 기능을 개발하기 위해서 추가한 코드를 정리해 보았다. 요약해 보면, Python의 Numpy의 is_busday를 사용하면 쉽게 구현이 가능하다. 코드는 다음과 같다. import numpy import datetime now = datetime.datetime.utcnow() now = now + datetime.timedelta(hours=9) workday = now.today().strftime("%Y-%m-%d") numpy.is_busday(workday) Tru.. 2024. 3. 3. Python - smtplib 기본 라이브러리를 이용한 text/html 메일 보내기 대부분 프로그래밍에서는 메일 전달과 관련된 기본 라이브러리 및 예제 코드를 제공하고 있다. 오늘은 Python 부분에 대해서 메일 전송 방안에 대해 정리해 보고자 한다. 여기에서는 기본 라이브러리를 활용한 방안에 대해서 정리해 보도록 하겠다. MailSender 함수 만들기 메일에 내용이나 본문이 변경될 수 있기 때문에 아래와 같이 함수를 선언하여 사용하는 것을 추천한다. 아래 코드에서 유심있게 봐야하는 부분은 보내야 하는 대상 즉 To가 여러명일 경우, sendmail 에서의 To 데이터와 Message["To"]에 들어가는 데이터 형식이 다르다는 것이다. smtplib 의 sendmail 에서는 []를 이용한 리스트 형태로 들어가야 한다. 하지만 message["To"] 에서는 string으로 들어가.. 2024. 3. 3. Python - 특정 문자열(str) 포함 유무(contains) 확인 방법 다른 언어(C#, Java등)을 사용하다 Python으로 전환하면서 가장 헷갈렸던 부분이 문자열 검색 부분이다. 보통 C# 기준으로 str에 .contains를 통해 특정 문자열이 포함 하고 있는지를 확인 할 수 있는데, Python에서는 아래와 같은 방법을 이용할 수 있다, 1. in, not in 조건 구분에 in 키워드를 이용해서 확인할 수 있다. 조건에 맞는 경우 True를 반환한다. str_text = 'abcdf' if 'a' in str_text: #True 반환 print('포함') else: #False 반환 print('미포함') not in은 반대로 포함하지 않는 경우 True를 반환한다. str_text = 'abcdf' if 'a' not in str_text: #True 반환 p.. 2024. 3. 2. Python - 파이썬 코드 실행 시간 측정 perf_counter, process_time 차이점 파이썬 코드 실행 시간 측정 파이썬 코드를 작성하다 보면 특정 코드가 얼마나 걸리는지 확인하고 싶을 때가 있다. 이때 사용할 수 있는 함수가 time 라이브러리의 perf_counter()와 process_time()이다. perf_counter, process_time 차이점 perf_counter()는 프로그램의 전체 실행 시간을 측정한다. 여기에는 프로그램이 실행되지 않고 대기하는 시간도 포함된다. 반면, process_time()은 프로그램이 실제 프로세싱(처리)된 시간만 측정한다. 아래 예제를 보자. import time def perf_proc(): time.sleep(1) for value in range(1, 5): pass start = time.perf_counter() perf_pro.. 2024. 3. 2. SQLAlchemy로 MySQL 데이터베이스 연결 및 쿼리하기 SQLAlchemy는 Python에서 데이터베이스를 연결하고 쿼리하는 데 사용할 수 있는 강력한 라이브러리이. MySQL을 포함한 다양한 데이터베이스와 호환된다. 데이터베이스 연결 SQLAlchemy를 사용하여 MySQL 데이터베이스에 연결하려면 먼저 create_engine() 함수를 사용해. 이 함수의 인수에는 데이터베이스 연결 정보가 포함된다. import sqlalchemy as db database_url = "mysql+pymysql://username:password@host:port/database" engine = db.create_engine(database_url) 위 예제에서는 다음과 같은 데이터베이스 연결 정보를 사용한다. 사용자 이름: username 비밀번호: password .. 2024. 3. 2. 이전 1 ··· 3 4 5 6 7 8 9 다음 반응형