목록파이썬(Python) (19)
imhamburger 님의 블로그
파이썬 smtplib 라이브러리와 gmail 계정을 이용하여 메일 전송하는 기능을 만들어 보자! 사전에 해야 할 설정 1. 메일 보낼 계정으로 로그인 후 우측 상단 톱니바퀴 클릭 -> 모든 설정 보기 클릭 2. 전달 및 POP/IMAP -> IMAP 사용 클릭 후 변경사항 저장 3. 구글계정에서 "앱 비밀번호 검색" 4. 앱 비밀번호 생성 (노출금지) 파이썬 코드import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email.mime.image import MIMEImage from email import e..
1. 순열(Permutation) 순열은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다. [1, 2, 3] 이라는 숫자들을 가지고 순열을 구현해보자.그림으로 나타내면 다음과 같다. 경우의 수는 총 6개이다.[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 1, 2][3, 2, 1] 그리고 숫자들을 각각 i, j, k 라고할 때,i, j, k[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 1, 2][3, 2, 1]잘 살펴보면 규칙이 있다.i 에 나왔던 수는 j 에 나오지 않는다.i 와 j 에 나왔던 수는 k 에 나오지 않는다. 1-1 반복문 사용 규칙을 이용해 반복문으로 구현해보자.for i in range(1, 4): for j in rang..
MANIFEST.in 파일은 Python 프로젝트에서 패키지를 배포할 때 포함될 파일들을 지정하기 위해 사용한다. MANIFEST.in 파일은 Python 프로젝트에서 패키지를 만들 때, 어떤 파일들을 포함시킬지 또는 제외할지를 결정하는 "포장 리스트"라고 생각하면 된다. 예를 들어, 내가 Python 패키지를 만들어서 다른 사람들과 공유하려고 하는데, 이 패키지에는 코드 외에도 설명서(README), 라이선스(LICENSE), 그리고 예제 파일들이 함께 들어가길 원한다고 해보자. 그.런.데 이런 파일들은 기본적으로 패키지에 포함되지 않는다. 그래서 MANIFEST.in 파일을 만들어서 "이 파일들도 같이 넣어줘"라고 알려주는 것이다. 결론적으로, MANIFEST.in 파일은 Python 패키지를 배포할..
if __name__=="__main__" 이 조건문은.... Python 파일이 직접 실행되었을 때만 특정 코드를 실행하도록 한다.만약 이 파일이 다른 곳에서 모듈로 import되면, 이 블록 아래의 코드는 실행되지 않는다. 직접 실행할 때 : __name__ 변수에는 "__main__"이 할당 (이때 __name__ 변수는 파이썬 파일명 그 자체)모듈로 import할 때 : 파이썬 파일이 다른 모듈에서 import된 경우, __name__ 변수는 파이썬 파일명 그 자체라고 하였으니 그 모듈의 이름(파일 이름)이 문자열로 할당 예시 test.pydef hello(): print("hello") if __name__=='__main__': print(f'world!, {__name__}') ..
파이썬의 requests 는 HTTP 요청을 보내고 응답을 받는 데 사용되는 라이브러리이다. HTTP뿐만 아니라 GET, POST, PUT, DELETE 등을 지원한다. 예를들어, 내가 외부데이터를 가져다가 쓰고싶을 때 requests를 이용하면 된다. (공식문서)참고로 requests는 파이썬 내장 모듈이 아니기때문에 설치를 해줘야한다. 설치방법은 다음과 같다.pip install requestspdm install requests #pdm 가상환경에서 설치할 때 GET 요청import requestsurl = "{GET 요청을 보낼 url}"r = requests.get(url)#optioncheck = r.status_code #status_code가 200을 출력하면 True 값이니 오류가 없다는..
API를 통해 어떤 데이터를 불러올 때 나에게 발급된 키를 공개하지않기 위해 os.getenv를 사용한다.깃헙에 나의 코드를 push할 때 나의 개인 키가 공개되어서는 안되기 때문이다. 따라서 환경변수를 불러올 수 있는 os.getenv를 사용할 수 있다.사용하는 방법은 우선 로컬환경에서 키를 지정한다. 예를들어 "abcdef"라는 키를 발급받았고 해당 키를 이용해야한다고 하였을 때,터미널창에 아래와 같이 입력한다.export API_KEY="abcdef"API_KEY라는 변수에 내 키값을 담는다. 그럼 파이썬파일에서 다음과 같이 이용할 수 있다.import osdef get_key(): key = os.getenv('API_KEY')os.getenv는 로컬 환경에서 변수를 불러오기 때문에 내가 지..
파라미터값에 default를 둘 수 있으며, 보통 많이 사용하는 파라미터값을 default로 설정한다.def gen_path(filename, path='/data/csv', home='~/my/airflow'): print(f"{home}{path}/{filename}") >>> gen_path('file') #입력값>> ~/my/airflow/data/csv/file #출력값위 코드에서 'path'와 'home'을 default값으로 각각 경로를 설정하였다.그럼 입력할 때 이미 default 값이 설정되어 있기때문에 출력값은 입력값과 default값이 합쳐져 나온다. 만약 default값이 앞으로 온다면?에러가 날 것이다. default 파라미터값은 앞에 올 수 없다.def add..
내가 만들고자 했던 것은,dtcmdcnt날짜명령어개수3개의 컬럼으로 이루어진 데이터 테이블을 판다스로 parquet 파일을 만들어 저장하고 터미널에서 cmd 를 입력하면 cmd에 해당하는 cnt 즉 개수가 출력되는 기능을 만들고자 했다. 여기서 cmd를 인자로 받아 cnt가 출력되게 만들어야 한다. 따라서 sys를 이용해 다음과 같은 파이썬 코드를 작성하였다.import pandas as pdimport sysa = sys.argv[1]def cnt(): df = pd.read_parquet("~/tmp/history.parquet") fdf = df[df['cmd'].str.contains(a)] cnt = fdf['cnt'].sum() print(cnt)인자값을 0이 아닌 1을 ..
맥 터미널에서 아래와 같은 코드를 사용했는데, cut: stdin: Illegal byte sequence 에러가 났었다.cat ~/data/test.txt | cut -d' ' -f1 이 에러는 터미널에서 UTF-8이 아닌 다른 종류의 인코딩된 데이터를 처리하려고 할 때 발생한다. *UTF-8(Unicode Transformation Format - 8-bit)은 유니코드 문자 인코딩의 한 방식으로 UTF-8은 전 세계 모든 문자를 표현할 수 있도록 설계된 가변 길이 문자 인코딩 방식이다. 이를 해결하기 위해서는 터미널 창에 아래 코드를 입력하면 된다.export LC_ALL=C 매번 같은 에러가 난다면, 영구적으로 설정할 수도 있다. ~/.zshrc 에 위에 코드를 추가하면 된다. 그럼 매번 터미널에..
간단한 계산기 기능을 파이썬을 이용해 만들고 패키지로 만들어 배포한다. 그리고 다른 기능에 미리 만든 계산기 패키지를 설치하고 계산기 패키지 안에 있는 함수를 dependencies로 받는 과제를 하였다. 필요한 파일은 총 2개이다. 계산기 기능을 가지고 있는 파일과 계산기 기능을 사용한 파일 1. 먼저 계산기 기능을 구현하기 위해 간단한 파이썬 코드를 작성한다.import sysa = int(sys.argv[1]) #인자를 받을 변수 ab = int(sys.argv[2]) #인자를 받을 변수 bdef add(): print(a + b) def div(): print(a / b)def mul(): print(a * b) 여기서 sys.argv는 터미널에서 파이썬 파일의 인자를 받을 때 사용하는 함수..