python 24

[PYTHON] gmail로 메일 보내기

python에서 gmail을 연결해서 메일을 보내는 코드를 한번 작성해보겠습니다. 메일은 SMTP를 활용하는데, SMTP는 Simple Mail Transfer Protocol의 약자로서 메일을 보내는데 사용되는 프로토콜입니다. python에서 gmail로 메일을 보내기 전에, gmail 설정에서 변경해주어야 하는 것이 있습니다. 아래 이미지와 같이 IMAP 액세스를 설정해주시면 됩니다. python에서는 smtplib을 제공하여 별도의 라이브러리를 설치하지 않고도 STMP를 사용할 수 있습니다. 코드로 바로 보여드리면, 아래와 같이 사용할 수 있습니다. import smtplib from email.mime.text import MIMEText smtp = smtplib.SMTP('smtp.gmail...

python 2021.08.06

[Python] numpy와 랜덤함수

개요 딥러닝을 하다보면, 벡터 연산을 하는 코드를 많이 짜게 됩니다. 딥러닝을 배워서 파이썬으로 개발을 처음 하시는 분들을 보면 종종 파이썬의 기본적인 라이브러리만 활용하여 코드를 짜시는 걸 종종 보았는데요. 결론부터 말씀드리면, 그 경우 너무 느립니다. 파이썬 언어 자체가 속도가 매우 느리기 때문에, 파이썬에서는 C언어를 쉽게 연결하여 사용할 수 있는 방법이 많이 있습니다. 정말 커스텀하게 코드를 짠다면 Cython이라는 것을 사용할 수도 있고, 이미 C언어로 동작하는 라이브러리도 많이 존재합니다. 그 중에서 소개 드릴 것은 Numpy인데요. 아마 파이썬을 조금 써보신 분들은 Numpy를 많이 들어보셨을건데, 왜 써야하는 지 잘 모르시는 분들도 많으실 것 같아요. Numpy를 써야하는 이유는 연산 속도..

python 2021.04.18

[Python] 딕셔너리, Dictionary에서 key를 통해 value를 가져오는 방법

파이썬의 딕셔너리(dictionary)는 key와 value를 쌍으로 가지는 자료형입니다. key를 활용하여 value를 가져올 수 있는 방법이 있는데 그 방법들을 한번 소개해보려 합니다. 1. key를 활용하여 dict[key]로 접근 가장 쉽게 접하는 방식입니다. key를 통해 직접 접근하는 방식입니다. 이 방식의 단점은 존재하지 않는 key에 대해서는 KeyError 에러를 발생시킨다는 것입니다. 예를 들면 이런 식입니다. 2. get 함수 활용 get(key, default=None) 함수는 위와 같은 경우의 단점을 보완합니다. get 함수를 활용하면 key가 존재하지 않는 경우에 대해서 에러를 발생시키지 않고, None 혹은 지정한 default 값을 반환합니다. 아래의 이미지와 같이 활용할 수..

python 2020.08.18

[Python] join 함수, filter 함수

python에서 join 함수는 문자열을 다룰 때 정말 많이 활용하는 함수 중에 하나입니다. python은 join을 활용하면, 아래와 같이 string list를 쉽게 합칠 수 있습니다. strings = ['abc', 'def', 'ghi'] ''.join(strings) # >> abcdefghi join으로 합칠 때, 원하는 문자열을 사이마다 넣어줄 수도 있습니다. strings = ['abc', 'def', 'ghi'] '1'.join(strings) # >> abc1def1ghi 간혹, 문자열 리스트에 빈 문자열이 있는 경우도 있습니다. 그 경우에는 위와 같이 join을 하면 1이 2번 사이에 들어가게 됩니다. 그럴 때는, 아래와 같이 filter 함수를 사용하면 빈 문자열을 제거해줄 수 있습..

python 2020.08.10

[Python] python 예외처리 try, except, else, finally

실제 서비스를 개발하다보면, 예외처리가 점점 중요해집니다. 서비스가 갑자기 죽어서도 안되고, 에러에 대해서 잘 기록해둬서 버그를 수정해야하니까요. 그래서 이번엔 Python에서의 예외처리를 어떻게 하는지 한번 공부해보았습니다. 1. Python 예외처리 Python에서는 try, except, else, finally라는 4개의 구문이 있고, 이 4가지를 활용하여 예외처리를 수행합니다. 우선 4개의 구문에 대해서 간단하게 알아보겠습니다. - try 절에서는 기본적으로 실행할 소스코드를 작성합니다. - except는 try에서 실행한 소스코드에서 에러가 났을 경우에 실행되는 코드를 작성합니다. - else 절은 try 절에서 실행한 코드가 에러 없이 정상적으로 동작한 경우에 실행될 코드를 작성합니다. - ..

python 2020.06.20

[Python] dict 정렬하기

python에선 dict는 제일 많이 쓰는 데이터구조 중 하나죠. dict는 dictionary의 줄임말이며, key-value 구조로 데이터를 저장해줍니다. dict를 정렬하기 위해서는 sorted() 함수를 사용할 수 있습니다. sorted(dict.items()) 이렇게 사용하시면 dict가 정렬이 되며, 이 때 정렬은 key를 기준으로 정렬하게 됩니다. item을 기준으로 정렬하고 싶다면, 아래와 같이 하시면 됩니다. sorted(dict.items(), key=lambda x:x[1]) 그리고, 만약 역순으로 정렬을 하고 싶다면, reverse=True 옵션을 넣어주시면 됩니다. sorted(dict.items(), reverse=True) sorted(dict.items(), key=lambd..

python 2020.05.27

[Python] 소스코드 정적 분석, pylint, flake8

소스코드의 정적 분석은 실행하지 않고 소스코드에 대해서 분석을 하는 것을 뜻합니다. 정적 분석의 반대는 동적 분석이며, 동적 분석은 실행 결과 디버깅부터 테스트 소스 커버리지 확인 등등이 다 포함이 됩니다. 정적 분석은 툴을 이용하거나 소스코드 리뷰를 하는 방식이 있는데요. Python 소스 코드를 정적 분석을 해주는 툴은 pylint와 flake8이 많이 사용됩니다. 이 두가지의 툴은 둘 다 pip를 활용하여 쉽게 설치할 수 있습니다. pip install pylint pip install flake8 이렇게 설치하고 사용하는 방법 또한 매우 쉽습니다. python -m pylint hello_world.py python -m flake8 hello_world.py pylint를 실행하면 아래와 같이 ..

python 2020.01.13

[python] float or int list to str list & str to float or int list

파이썬에서 list로 구성된 vector를 파일에 쓰고 싶을 때가 있죠? list는 join을 쓰면 한 줄로 합쳐지는데 str 인자가 들어가야합니다. 그러면 list이 모든 아이템을 한방에 str로 바꿔주면 join으로 합칠 수 있겠죠? 그럴때! 아래와 같이 map을 사용하시면 됩니다. ' '.join(map(str, vector)) list에서 item 간에 구별하는 부분을 띄어쓰기로 하려면 위와 같이 하시면 되고 탭을 쓰고 싶으시면 '\t'.join(map(str, vector)) 와 같이 쓰실 수 있어요. 그럼 이걸 불러왔을 때, 파일에서 한줄을 읽고 다시 나눠줘야겠죠? 그냥 split 쓰시면 list의 item들이 str 형식으로 들어갈거에요. 하지만 vector니까 우린 float나 int로 쓰..

python 2019.04.19

[Python] python에서 bash 명령 실행하는 방법

python에서 bash 명령을 실행하는 방법 중에 subprocess 모듈을 활용하는 방법입니다. subprocess 모듈을 활용하면 bash 명령을 단순히 실행만 시킬 수도 있고, 실행한 명령에 대한 결과를 받아올 수도 있습니다. 먼저 실행만 하는 경우로 call 메서드를 활용하면 됩니다. import subprocesssubprocess.call('ls -al', shell=True) 위와 같이 실행하면, ls -al 이라는 명령을 실행하게 되고 결과가 바로 프린트 됩니다. 실행하고, 실행한 결과를 바로 프린트 하는 것이 아니라 결과값을 가지고 특정한 프로세스를 하기 위해서는 check_output 메서드를 활용할 수 있습니다. import subprocessresult = subprocess.ch..

python 2018.06.26