본문 바로가기

PYTHON11

Python - smtplib 기본 라이브러리를 이용한 text/html 메일 보내기 대부분 프로그래밍에서는 메일 전달과 관련된 기본 라이브러리 및 예제 코드를 제공하고 있다. 오늘은 Python 부분에 대해서 메일 전송 방안에 대해 정리해 보고자 한다. 여기에서는 기본 라이브러리를 활용한 방안에 대해서 정리해 보도록 하겠다. MailSender 함수 만들기 메일에 내용이나 본문이 변경될 수 있기 때문에 아래와 같이 함수를 선언하여 사용하는 것을 추천한다. 아래 코드에서 유심있게 봐야하는 부분은 보내야 하는 대상 즉 To가 여러명일 경우, sendmail 에서의 To 데이터와 Message["To"]에 들어가는 데이터 형식이 다르다는 것이다. smtplib 의 sendmail 에서는 []를 이용한 리스트 형태로 들어가야 한다. 하지만 message["To"] 에서는 string으로 들어가.. 2021. 9. 6.
Python - snake_case, camel_case, upper_case naming style 이란 코드 네이밍은 서로 몇가지 규칙을 개발자들 사이에서 코드 가독성과 공유시 보다 이해가 쉽도록 하는데 있다. 필수도 지킬 필요는 없지만, 동일한 규칙을 사용하게 되면, 서로 다른 개발자가 개발한 코드라도 이해도가 높아지고 코드의 완성도가 높아지기 때문에 되도록이면 규칙을 정해서 사용하는 것이 좋다. 오늘은 Python 의 Linting highlights syntactical and stylistic problems와 Code Quality 로 활용할 수 있는 Linting 기능을 이용하면 Snake_case Name 경고를 볼 수 있는데, Python에서 추천하는 Code Naming인 Snake Case와 그외 많이 사용하는 Camel Case, 그리고 Upper Case에 대해서 정리해 보겠다. Sn.. 2021. 8. 24.
Python - Boto3 lib paginator 통한 S3 대량 데이터 가져오기 Boto3 라이브러리는 Python에서 AWS 리소스를 사용하기 위해 가장 많이 사용되는 라이브러리로 여기에서 최근 알게된 팁을 하나 정리해 본다. 아마 가장 많이 사용하는 기본적인 코드 방식은 다음과 같을 것이다. import boto3 client = boto3.client('s3') my_bucket = s3.Bucket('bucket_name') for file in my_bucket.objects.all(): print(file.key) 위 코드를 통해 기본적으로 쿼리를 진행하면 한번에 최대 1000개의 데이터만 가져올 수 있다. 하지만 기업에서 사용하는 데이터를 보통 더 많은 데이터를 보관하고 있기 때문에 1000개의 제한을 해결할 수 있는 방식을 추가로 제공하는데, ListObjectV2를 .. 2021. 8. 19.
VSCode Error - Sorry, something went wrong activating IntelliCode support for Python. Please check the "Python" and "VS IntelliCode" output windows for details. 한동안 Python을 VS Code로 쓰면서 크게 의식하고 있지 않았는데, 오늘은 왠지 모르게 위 오류가 정말 거슬리는 하루 였다. 그래서 한번 위 오류를 해결한 내용을 정리해 본다. 위 오류가 발생하는 원인은 크게 2가지로 고민해 볼 수 있다. 첫째 - Visual Studio IntelliCode 플러그인의 문제 둘째 - Visual Studio Code의 Linting 의 문제 아마 첫번째 플러그인의 문제라면 버전을 바꿔서 설치해보는것이 가장 기본적인 액션 플랜이다. 이후에는 settings.json의 Python 설정을 찾아서 변경해보는 것이 좋다. 위 방식으로도 해결이 되지 않는다면, 두번째 문제에 대한 해결 방안인 Linting을 다시 설치해 보는것이 좋다. 2021. 7. 26.
Python - string 문자열 원하는 구분자 기준으로 나누기 오늘은 최근에 특정 문자열 갯수를 넘어가는 글에 대해서 조금 더 이쁘게 잘라 낼 수 있을까에 대한 고민하던 부분중에 개발을 진행한 부분에 대한 내용이다. 고민한 내용은 간단하다. \n 기준으로 문자열을 자르고 싶은데, \n을 기준으로 자르자니 너무 많이 문자열이 잘라지므로 이를 가장 알맞은 길이를 대입하여 자르고 싶었다. 그래서 생각한 규칙은 다음과 같다. 특정 길이 기반으로 문자열을 자른다. 만약 원하는 구분자가 해당 특정 길이 내에 있다면, 특정 길이를 안에 있는 구분자를 이용하여 자른다. 원하는 구분자가 특정 길이에 여러개 있다면 최대한의 크기를 유지 할 수 있었으면 한다. 원하는 구분자가 없는 경우에는 최대 크기로 자른다. 조건은 위 4가지 인데 실제 코드를 작성해 보니 생각보다 고려해야 할 포인.. 2021. 6. 28.
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) 이를 조금 웹 코드에.. 2021. 6. 16.
Python - subprocess, Popen, call차이 그리고 WorkDirectory 변경 Python에서 실행중 추가로 프로그램을 실행해야 하는 경우가 발생할 경우 subprocess 모듈을 이용해서 사용할 수 있다. 아마 이모듈을 사용할 때 가장 많은 찾아보게 되는 부분이 Popen과 Call의 차이 그리고 WorkDirectory 변경일 것 같다. 그럼 핵심만 간단히 정리해 보자. Popen 과 call의 차이점 Popen과 call의 가장 큰 차이점은 바로 결과를 기다릴 수 있는 구조인가 이다. 실제로 call은 Popen을 감싼 구조라고 할 수 있다. 즉 Popen으로 실행한 프로그램을 실행을 기다렸다가, 실행이 완료되었을 때 결과를 받을 수 있는 것이 call인것이다. 따라서 실행 결과를 기다릴 필요가 없다면, Popen을 사용하고, 실행 결과를 대기하였다가 확인해야 하는 경우 ca.. 2021. 5. 24.
Windows/Linux Command line run Exit code Command Line 프로그램을 제작하다보면, 실행 결과가 정상적으로 처리되었는지 확인하여 처리해야 하는 경우가 있다. 이때 유용한 Exit Status에 대해서 배워보도록 하겠다. 윈도우와 리눅스는 모두 콘솔에서 실행을 완료후 종료 코드를 내보내도록 구성되어 있다. 그리고 실행 종료 코드를 특정 변수에 저장한다. Windows의 경우 echo %errorlevel%, 리눅스의 경우 echo $? 에 마지막 실행 코드를 보관 한다. Exit Status가 0인 경우 정상적으로 실행이 완료된 상태를 의미한다. 만약 0 이외의 코드가 있다면 프로그램 실행중 오류가 발생했다는 의미이다. 프로그램 실행 유무 확인 그럼 간단이 윈도우에서 Exit Status를 확인해 보겠다. hostname 명령이 실행되었는지.. 2021. 4. 1.
Django - MySQL/MariaDB 연결하기 대부분의 서비스용도로 사용하다면, 기본적으로 제공하는 파일 기반의 Database인 SQLlite 보다는 MySQL, 혹은 MariaDB를 통해 Database를 사용하는 것이 확장성에 좋기 때문에 MySQL/MariaDB 연결 방법에 대해서 정리해 본다. 1. mysqlclient 설치 가장 먼저 해야 할 일은 MySQLClient를 설치하는 것이다. Visual Studio 기준으로 env 에서 마우스 우클릭을 통해 Manage Python Packages 에서 mysqlclient를 입력하여 설치할 수 있으며, 이는 pip를 통해 설치한 것과 동일하다. pip install mysqlclient 설치가 완료되면, 패키지가 추가된 것을 확인 할 수 있다. 2. DATABASE 설정 변경 Django의.. 2021. 3. 24.
Ansible - install on Mac Mac 테스트용도의 Ansible 구축해서 테스트 용도로 활용하는 방안입니다. Ansible은 Target Host에 Agent가 설치가 필요하지 않아서 손쉽게 사용할 수 있는 장점이 크고, 만약 가능하다면 자신의 맥북을 Ansible 서버로 사용하면서 여러 서버의 설정을 구성하고 조정할 수 있습니다.(기업환경에서는 바람직하지 않겠죠?) 여기에서는 MAC을 이용해서 테스트할 수 있는 환경을 제공해보도록 하겠습니다. 먼저 MAC OS 버전에 따라 설치 환경이 다릅니다. 제가 설치한 환경은 아래와 같습니다. #sw_vers ProductName:Mac OS X ProductVersion:10.14.6 BuildVersion:18G95 버전을 확인하고, 저와 비슷한 버전인 경우 본 설치 가이드대로 설치가 가능.. 2020. 10. 22.