티스토리

CDW (Coding Discussion World)
검색하기

블로그 홈

CDW (Coding Discussion World)

pymin.tistory.com/m

#coding #python

구독자
1
방명록 방문하기

주요 글 목록

  • 환경변수 파이썬 환경변수 설정하기.. import os os.environ['MLFLOW_TRACKING_USERNAME'] = 'admin' os.environ['MLFLOW_TRACKING_PASSWORD'] = 'password' 환경변수 조회하기 import os os.environ.get 환경변수 원하는 key로 조회하기 import os os.environ.get['PATH'] 공감수 0 댓글수 0 2024. 1. 11.
  • python - pyinstaller 로 실행파일 만들기 pyinstaller를 사용하면 python 스크립트를 가지고 실행 파일로 만들 수 있다. 우선 pyinstaller를 설치해준다. pip install pyinstaller 다음으로 pyinstaller ${파일명}.py를 실행시키면 파이썬 프로그램이 깔려있지 않아도 실행 가능한 파일들이 나온다. dist/build 라는 폴더가 생기고 해당 폴더 안에 파일들이 있다. pyinstaller ${파일명}.py 이제 실행파일(exe파일)로 만들어보자. -F 나 --onefile 옵션을 입력하면 된다. pyinstaller --onefile ${파일명}.py 이렇게 하면 build 폴더 안에 실행 가능한 파일이 만들어진다. (파일의 사이즈는 어떤 라이브러리들을 가져다 썼는지에 따라 차이가 많이 날 수 있다.).. 공감수 0 댓글수 0 2023. 1. 17.
  • python(selenium) - 대표 포털 사이트(네이버,구글,daum,zum,bing) 자동 검색하기 python selenium을 통해 대표 포털 사이트(네이버,구글,daum,zum,bing) 자동 검색하기를 해보고자 한다. selenium은 4버전 이상으로 한다. 1. Naver from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time url = 'https://www.naver.co.kr' options = webdriver.ChromeOptions() options.add_argument('start-maximized') driver = webdriver.Chrome('chromedriver.exe', options.. 공감수 0 댓글수 0 2023. 1. 15.
  • python - random을 활용해서 load 분배, 원하는 비율만큼 함수 실행 이번편은 random.choice를 활용한 load 분배를 해보려고 한다. X라는 리스트에 네이버, 카카오, 구글이 있다고 가정했을 때 랜덤한 값을 뽑으러면 random.choice(X)를 하면 된다. 그런데 네이버, 카카오, 구글을 5:3:2의 비율로 뽑고 싶다면 어떻게 하면 될까? 방법이야 많겠지만 아래처럼도 할 수 있다. 우선 주소 옆에 capa(비율)을 설정해보자. import random url = [ ['네이버',5], ['카카오',3], ['구글',2], ] 그 뒤에 url_total 이라는 변수를 만들고 미리 지정한 숫자만큼 변수에 데이터를 담는다 url_total = [] for i in url: for j in range(0,i[1]): url_total.append(i[0]) prin.. 공감수 0 댓글수 0 2023. 1. 15.
  • python(selenium) - 크롤링 기본 사용법 python selenium을 활용한 크롤링에 대해서 알아보고자 한다. 크롤링은 다들 많이 들어봤을거라고 생각한다. 크롬 등 웹에서 반복적으로 수행하는 일을 자동화 할수도 있고, 특정 게시글의 제목을 다 추출한다던가, 그림을 추출한다던가 응용하면 웹에서 반복적으로 수행해야 하는 일들을 자동화하기에 좋다. (이전 글중에 appium 을 통한 스마트폰 자동화랑 비슷하다) 우선 selenuim을 설치해보자. 이번편은 기본에 대해서 배울 것이므로 특별한 버전 없이 설치해도 무방하다. (신규 버전부터는 find_element_by_css_selector 등 기본적인 내용이 많이 바뀌었다. pip list로 selenium 버전이 4 이상이라면 3버전으로 설치하는것이 좋다 또는 pip list --outdated).. 공감수 0 댓글수 2 2023. 1. 13.
  • python(requests) - kakao api를 통해 data 받아와서 db에 저장하기 (3) 지난 편에서는 kakao api를 통해서 받아온 값을 출력해 주는 것까지 진행했다. 2023.01.08 - [Python/Do something] - python(requests) - kakao api를 통해 data 받아와서 db에 저장하기 (2) python(requests) - kakao api를 통해 data 받아와서 db에 저장하기 (2) 지난 편에서는 kakao Developers에 가서 api request를 위한 Key도 받아오고, window cmd창을 통해 sample data도 날려 보았다. (이전 발행 글 참고) 2023.01.08 - [Python/Do something] - python(requests) - kakao api를 통해 data pymin.tistory.com 이번에.. 공감수 1 댓글수 1 2023. 1. 8.
  • python(requests) - kakao api를 통해 data 받아와서 db에 저장하기 (2) 지난 편에서는 kakao Developers에 가서 api request를 위한 Key도 받아오고, window cmd창을 통해 sample data도 날려 보았다. (이전 발행 글 참고) 2023.01.08 - [Python/Do something] - python(requests) - kakao api를 통해 data 받아와서 db에 저장하기 (1) python(requests) - kakao api를 통해 data 받아와서 db에 저장하기 (1) 이번 편은 kakao api를 통해 data를 받아오고 해당 결과 값을 db에 저장하는 것이다. 우선 kakao api를 다운받기 위해 아래 kakao Developers에 접속하자 https://developers.kakao.com/ Kakao Devel.. 공감수 1 댓글수 0 2023. 1. 8.
  • python(requests) - kakao api를 통해 data 받아와서 db에 저장하기 (1) 이번 편은 kakao api를 통해 data를 받아오고 해당 결과 값을 db에 저장하는 것이다. 우선 kakao api를 다운받기 위해 아래 kakao Developers에 접속하자 https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 거기서 내 애프리케이션을 누르면 새로운 애플리케이션을 만들 수 있다. 그리고 나면 REST API 키 등 여러 키 등을 확인할 수 있는데 해당 KEY를 잘 기억해두자. 이제 어떤 API를 사용할지 정해야 하는데 kakao에서는 아래 내용 처럼 다양한 정보들을 제공해준.. 공감수 1 댓글수 0 2023. 1. 8.
  • python 기초 - multiprocessing 이번편은 파이썬의 process에 대한 내용이다. 아래 process를 실행하면 process name과 id 값을 알 수 있고 id는 계속 실행하면 바뀌는 것을 확인할 수 있다. import multiprocessing as mp def Process(): proc = mp.current_process() print(proc.name) print(proc.pid) Process() MainProcess 1136 MainProcess 5936 이번에는 Subprocess라는 이름을 가진 process를 만들고 해당 process를 통해 Process_start라는 함수를 실행시켜 보자. Subprocess id도 확인이 가능하다. import multiprocessing as mp import time .. 공감수 1 댓글수 0 2022. 12. 24.
  • python 기초 - Thread (쓰레드) - daemon, join, 객체 등 이번편은 파이썬의 thread이다. thread는 함수 등을 독립적으로 실행시켜 주기 때문에 아주 중요한 개념이고, schedule과 같이 사용하는 등 다양하게 활용이 가능하다. 우선 첫번째 방법은 thread를 통해 별도의 함수를 실행시키는 것이다. import threading def print_sth(): print("thread test") thd = threading.Thread(target=print_sth) thd.start() thread test 단순하게 함수를 실행시키는거랑 뭐가 다르지? 할 수 있다. 이제 아래 내용을 확인해보자. 실행시키면 첫번째 함수가 다 수행되고, 이어서 다음 함수가 수행된다. 만약 동시에 수행하고 싶다면? import threading import time de.. 공감수 1 댓글수 0 2022. 12. 24.
  • python 기초 - queue 이번에는 파이썬의 queue에 대해서 알아보고자 한다. Queue 모듈을 import하면 사용할 수 있다. put은 que에 값을 저장하고, get은 해당 que에서 저장된 값을 하나씩 빼온다고 보면 된다. 아래처럼 1을 que에 넣고 1을 빼서 print하면 1이 출력된다. from queue import Queue que = Queue() que.put(1) print(que.get()) 1 이번에는 que가 쌓인다는것을 보기 위해 1~10까지의 값을 que에 먼저 집어넣고 0.2초마다 한번씩 que에 든 값을 빼서 출력해보자. from queue import Queue import time que = Queue() def queue_put_test(): for i in range(1,11): que.. 공감수 1 댓글수 0 2022. 12. 24.
  • python 기초 - decorator 파이썬의 decorator안 데코라는 뜻 처럼 기존 함수를 수정하지 않고 데코레이션을 통해 함수를 수정하는 것이다. 우선 기존의 밋밋한 함수를 보자 def print_test(): print("deco test") print_test() deco test print_test란 함수를 실행시켰는데 해당 무구만 출력되니 뭔가 단조로운 느낌이다. decorator를 사용해서 출력되는 문구의 위 아래에 다른 것들이 출력되도록 하자. def decorator(deco): def deco_print(): print("="*50) deco() print("="*50) return deco_print @decorator def print_test(): print("deco test") print_test() =====.. 공감수 1 댓글수 0 2022. 12. 24.
  • python 기초 - 변수가 있는지 확인하기 (hasattr / getattr / setattr) 이번 편은 변수가 있는지 확인하기 (hasattr / getattr / setattr) 이다. 1. hasattr 클래스로 만든 객체에 해당 변수가 있는지 확인한다. 있다면 True, 없다면 False class check(): check1 = 10 check2 = 20 check3 = 30 test = check() print(hasattr(test, "check1")) print(hasattr(test, "check2")) print(hasattr(test, "check3")) print(hasattr(test, "check4")) True True True False 2. getattr 클래스로 만든 객체에 해당 변수가 있는지 확인하고 해당 값을 가져온다. class check(): check1 =.. 공감수 1 댓글수 0 2022. 12. 21.
  • python 기초 - 지역변수, 전역변수, 동적변수 (local, global, globals 등) 이번 편에서는 지역변수와 전역변수에 대해 알아보고자 한다. 지역변수는 뭐고 전역변수는 뭘까? 말 그대로 지역 변수란 함수 내에서만 쓸 수 있는 변수이며, 전역 변수는 해당 함수 뿐만 아니라 모든 곳에서 쓸 수 있는 변수이다. 매번 그렇듯 간단한 예제와 함꼐 알아보자. 처음 나오는 변수는 전역변수이고, 함수에서 정의한 지역변수이다. 따라서 함수를 실행시키고 변수값을 확인해도 처음에 설정한 10이 출력된다. local_value = 10 def local(): local_value = 20 local() print(local_value) 10 이번에도 마찬가지로 함수에서 생성한 지역 변수는 함수에서만 20이 적용되고 밖으로 나오면 다시 10이 출력된다. local_value = 10 def local(): .. 공감수 1 댓글수 0 2022. 12. 21.
  • python 기초 - 예외 처리 (try, except, finally, Error처리) 이번에는 예외 처리 (try, except, finally, Error처리)에 대해 다루어보고자 한다. 에러 한번 났다고 파이썬 프로그램이 종료될 수 없으니 예외 처리를 해서 다양한 사태에 대비를 하고 에러 로그를 분석해서 코딩을 더욱 정교하게 수정할 수도 있다. 우선 에러처리기 때문에 에러를 만들어보면서 확인해보자. int("string") 당연히 에러가 난다. PS C:\pymin2> & C:/Users/min/AppData/Local/Programs/Python/Python38/python.exe c:/pymin2/py_study/try,except_test.py Traceback (most recent call last): File "c:/pymin2/py_study/try,except_test... 공감수 0 댓글수 0 2022. 12. 21.
  • python 기초 - 한줄 수식 정리 (for, if 등) + zip, *zip 이전 편에서 if, for 등에 대해서 언급하면서 한줄 수식에 대해서 잠깐 언급했었다. 2022.12.08 - [Python/Study] - python(study) - class (부모, 자식 class, init, super) 이번에는 조금 더 자세히 알아보자. 우선 한번 설명했었던 한줄 for 문이다. 아래처럼 기존 list의 값을 원하는대로 바꿔서 새로운 list를 만들 수 있다. one = [1,2,3] print(one) one_for = [i + 10 for i in one] print(one_for) [1, 2, 3] [11, 12, 13] 다음은 if 문을 한줄로 만들어보자. if 구문이 들어가고 조건에 맞으면 ( : ) 이후 내용을 수행한다. if 5 > 1 : print("YES") .. 공감수 1 댓글수 0 2022. 12. 17.
  • python 기초 - class (부모, 자식 class, init, super) class는 다들아는것처럼 붕어빵 틀과 같다. 다양한 값을 가진 변수를 생성할 수 있다. class Person: def __init__(self, name): self.name = name print(f"{self.name} 태어남") p1 = Person("pymin") p2 = Person("pymin2") pymin 태어남 pymin2 태어남 아래처럼 함수추가하면 변수에 .{함수} 로 만든 변수에 함수를 추가로 실행할 수있다. class Person: def __init__(self, name): self.name = name print(f"{self.name} 태어남") def school(self, school_name): print(f"{self.name}이/가 {school_name}에 입.. 공감수 0 댓글수 2 2022. 12. 8.
  • python 기초 - 다양한 방법으로 로또 번호 생성기 만들기 random 함수를 이용해서 로또 번호 만들기를 할건데 그 과정에서 여러가지 방법을 사용해보자. 그냥 생각나는 방법대로 막 만들어볼 것이다. 우선 random 함수는 아래처럼 기본적으로 0이상 1미만 사이의 난수를 생성한다. from random import * print(random()) # 0이상 1미만 사이의 난수 생성 print(random()) print(random()) 0.8612330209423659 0.7791022028358539 0.9651835672890571 로또 번호는 1~45까지의 정수이니 어떻게 하면 될까? 방법은 여러가지가 있겠지만 우선 3가지 방법을 공유한다. 1. random 함수에 45를 곱하고 1을 더한 후 정수(int)로 변경 2. randrange를 이용해서 1~.. 공감수 0 댓글수 0 2022. 12. 1.
  • python 기초 - 함수 (*args, **kwargs) 함수란 다들 알다시피 함수를 만들고 원하는 값을 넣으면 함수 안의 내용이 수행된다. 함수에서 자주 사용하는 기능을 알아보자. def sum_sum(a,b,c): print(a+b+c) sum_sum(1,2,3) sum_sum(3,4,5) 6 12 1. 함수로 무언가 계산을 하거나 계산하는 값을 return 할 수 있다. def sum_sum(a,b,c): return (a+b+c) result_1 = sum_sum(1,2,3) print(result_1) result_2 = sum_sum(3,4,5) print(result_2) 6 12 2. 함수의 기본값을 설정할 수 있다. 기본값을 설정하면 함수에 해당 내용을 입력하지 않아도 에러가 나지 않고 기본값이 적용된다. def sum_sum(a,b=2,c=3.. 공감수 0 댓글수 0 2022. 11. 30.
  • python 기초 - print 활용 (sep, end, r, f , file 등) 1. print 로 문자열 합치기 print의 다양한 출력 방법에 대해 알아보자. 문자열을 합칠때는 '+'도 가능하고 ','도 가능한데 ','는 자동으로 한칸이 띄워진다. print("A"+"B") print("A","B") AB A B 2. print의 sep 문자열을 합칠때 sep을 사용하면 한칸 띄어쓰기 대신 원하는 구문을 넣을 수 있다. print("A"+"B"+"C", sep="**") print("A","B","C", sep="**") ABC A**B**C 3. print의 end print의 마지막은 \n 이기 때문에 print가 2개면 print 하나가 끝나고 다음 줄에서 print가 수행되지만 end를 통해서 원하는 값으로 변경할 경우 아래처럼 마지막에 줄바꿈(\n)이 아니라 원하는 값이.. 공감수 0 댓글수 0 2022. 11. 30.
  • python 기초 - 문자열, lower, upper, index, find, count 1. 소문자로 변경 및 확인 (lower, islower) regex = "12345abcedABCED" print(regex) print(regex.lower()) print(regex[5]) print(regex[5].islower()) 12345abcedABCED 12345abcedabced a True 2. 대문자로 변경 및 확인 (upper, isupper) print(regex) print(regex.upper()) print(regex[11]) print(regex[11].isupper()) 12345abcedABCED 12345ABCEDABCED B True 3. index index는 해당 문구에 대해 몇번째 index 값인지를 나타냄 regex = "BBABBABBC" indexA = .. 공감수 0 댓글수 0 2022. 11. 29.
  • python 기초 - if, for, while, break, continue (+한줄수식) 1. if if는 조건이 만족하면, elif는 추가 조건 else는 위의 조건이 모두 만족하지 않는다면 적용된다. 예제1 - if에 or 조건 사용 AA = 1 BB = 1 CC = 1 if AA == 1 or BB == 2: print("IF") elif CC == 1: print("ELIF") else: print("ELSE") IF 예제2 - if에 and 조건 사용 AA = 1 BB = 1 CC = 1 if AA == 1 and BB == 2: print("IF") elif CC == 2: print("ELIF") else: print("ELSE") ELSE 2. for for 는 리스트에 있는것들을 하나씩 꺼내서 반복해서 실행한다. 2-1. list를 하나씩 print for for_test i.. 공감수 0 댓글수 0 2022. 11. 29.
  • python 기초 - list, dictionary, tuple, set 1. List 1-1. List 기본 및 Index List = [ "A", "B", "C", "D"] print(List) print(List.index("A")) print(List.index("B")) ['A', 'B', 'C', 'D'] 0 1 1-2. list.append List = [ "A", "B", "C", "D"] List.append('E') print(List) ['A', 'B', 'C', 'D', 'E'] 1-3. list.insert List = [ "A", "B", "C", "D"] List.insert(0, "F") print(List) List = [ "A", "B", "C", "D"] List.insert(2, "F") print(List) ['F', 'A', 'B', '.. 공감수 0 댓글수 0 2022. 11. 29.
  • python 기초 - 사칙 연산, 절대값, 반올림 등 1. 기초적인 연산 가장 기초적인 연산인 더하기 빼기 등이다. print(1 + 1) # 더하기 print(4 - 2) # 빼기 print(3 * 2) # 곱하기 print(9 / 3) # 나누기 print(2 ** 3) # 제곱 print(5 % 3) # 나머지 = 2 print(10 // 3) # 몫 결과값은 아래와 같다. 2 1 10 2.0 8 2 1 3 2. 비교 연산 크거나 같거나 다르거나에 대해 연산한다. print(12 > 3) # True print(5 >= 7) # False print(12 6)) # 좌항과 우항이 모두 참인가? print((6 > 0) or (3 > 6)) # 좌항 또는 우항 중 하나라도 참인가? print(n.. 공감수 0 댓글수 0 2022. 11. 29.
  • python 기초 - venv 사용하기 파이썬 패키지(라이브러리) 의존성 문제로 가상 환경을 사용한다. 파이썬2에서는 별도로 virtualenv를 설치해야 하지만 파이썬3 버전부터는 venv 으로 바로 가상 환경 생성이 가능하다. 아래는 가상 프로젝트 생성 PS C:\pyminv> python -m venv {프로젝트명} PS C:\pyminv> python -m venv pyminkivy 다음으로 가상 환경에 접속하려면 아래 명령어를 입력한다. 프로젝트 폴더 안에서 아래 명령어를 입력하면 생성한 가상 환경에 접속 가능하다. 접속하면 제일 앞에 ({프로젝트명})이 보인다. {프로젝트명}\Scripts\activate PS C:\pyminv> pyminkivy\Scripts\activate (pyminkivy) PS C:\pyminv> 만약 가.. 공감수 0 댓글수 0 2022. 11. 29.
  • python 기초 - open (파일 읽고, 쓰기) 이번에는 파일 읽고, 쓰기를 해보고자 한다. open으로 바로 접근하는 방법이 있고, with을 사용해서 접근하는 방법이 있다. 어떤 것을 써도 상관은 없지만 with을 쓰지 않으면 마지막에 close()를 해줘야 한다. 우선, 파일 읽기다 ('r' 사용) ### with 사용 with open(os.getcwd() + '/test.txt', 'r') as f: a = f.readlines() print(f'a = {a}') ### with 미사용 f = open(os.getcwd() + '/test.txt', 'r') b = f.readlines() print(f'b = {b}') f.close() 둘다 test.txt라는 파일을 정상적으로 읽었다. a = ['test1\n', 'test2\n', 't.. 공감수 0 댓글수 0 2022. 11. 29.
  • python 기초 - logging 이번편은 파이썬의 logging 기능에 대해서 알아보고자 한다. 해당 기능을 사용하면 특정 error log를 출력할수도 있고 별도의 파일에 저장할수도 있다. 또한 try, except 문을 통해 특정 상황에 원하는 log를 출력할수도 있다. 우선 아래와 같이 설정해놓고 한줄한줄 확인해보자. ### 로깅 이름 및 레벨 (DEBUG, INFO, WARNING, ERROR, CRITICAL) pyminlogger = logging.getLogger("pymin") pyminlogger.setLevel(logging.WARNING) ### 로깅 출력 형식 formatter = logging.Formatter('%(asctime)s - %(name)s [ %(levelname)s ] - %(threadName).. 공감수 0 댓글수 0 2022. 11. 29.
  • python 기초 - datetime python의 datetime에 대해 알아보고자 한다. 1. 가장 기본적인 형태 import datetime # from datetime import datetime, time, date, timedelta #보통 이렇게 많이 쓴다. now = datetime.datetime.now() print(now) 2022-06-11 23:58:29.150157 2. 내가 원하는 형태로 출력 import datetime now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') now2 = datetime.datetime.now().strftime('%Y/%m/%d %H:%M') print(now) print(now2) 2022-06-12 00:01 2022/06/12 .. 공감수 0 댓글수 0 2022. 11. 29.
  • python(django) - 장고로 웹페이지 만들기 (8) 지난 편에서는 sqlite3 database에 있는 data를 출력하고 특정 게시글을 눌었을 때 별도의 URL페이지를 통해 디테일한 화면으로 이동할 수 있도록 설정하였다. 2022.11.12 - [Python/Do something] - python(django) - 장고로 웹페이지 만들기, detail page (7) 이런 과정에서 3개의 html 파일이 생겼고, 중복되는 부분이 많다. 중복되는 부분은 합쳐야 관리가 쉽다. 우선 navi.html로 신규 파일을 하나 생성하자. 이 파일을 main base로 사용할 예정이다. navi.html에 아래 내용을 붙여넣자. 내용 자체는 기존 base2.html 에 있던 내용들 중에서 바뀌지 않는 부분만 유지하고 내용이 변경되는 부분은 밑에 {% block ma.. 공감수 0 댓글수 0 2022. 11. 12.
  • python(django) - 장고로 웹페이지 만들기, detail page (7) 지난 글에서는 sqlite3 datebase에 저장된 data를 실제 웹 화면에 출력하는 것을 진행했다. 2022.11.11 - [Python/Do something] - python(django) - 장고로 웹페이지 만들기, views (6) blog의 detail한 화면을 보기 위해서 modal을 이용해서 팝업 형태로 상세 내용을 확인했다. 하지만 팝업 형태가 아니라 별도 도의 URL주소와 page를 할당하는 형태로 하려면 어떻게 해야 할까? 추가 app은 만들지 말고 기존 blog app을 활용해서 최대한 간단하게 만들어보자. 우선 blog의 app의 views.py에 아래 새로운 class를 추가한다. class PostList2(ListView): model = Post template_name.. 공감수 1 댓글수 1 2022. 11. 12.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.