Super Kawaii Cute Cat Kaoani
본문 바로가기
🏃‍♀️ 대외활동/Codeit Boost-Node.js

1주차 프로그래밍 프리뷰 [코드잇 부스트 백엔드 스터디]

by wonee1 2024. 5. 8.
728x90

<프로그래밍 프리뷰 >

1. 업무 자동화 

 

01. 모든 연락처에 이메일 보내기

 

파이썬으로 개인 메일을 보낼 수 있다

  1. 주소록 내보내기 csv 파일 다운로드
  2. csv 파일을 파이썬으로 갖고 와서 데이터 확인
  3. 코드 작성
import pandas as pd 
import yagmail 
from time import sleep 

contacts_df = pd.read_csv('./contacts.csv')

yag=yagmail.SMTP{
    user="주소작성"
    password="비밀번호작성"
}


for index, contact in contacts_df.iterrows():
    name= contact['Given Nmae']
    email = contact['E-mail 1 - Value']
    subject = f'{name}님 수료를 축하드려요!'
    body=(f'내용\n')
    yag.send{
    to=email,
    subject=subject,
    contents=body
    }
     print(f'{name}님 전송 완료')
     sleep(30) #30초씩 대기

☑️iterrows 객체는 DataFrame의 각 행의 정보를 담은 객체라고 이해하면 된다

☑️판다스(Pandas)는 파이썬 데이터 분석 라이브러리 중 하나로, 데이터 조작, 정제, 분석, 시각화 등을 위한 다양한 기능을 제공

☑️이메일 서비스에서는 수신 정책이라는 게 있다 → 짧은 시간에 메일을 많이 보내면 스팸 계정으로 분리됨 따라서 delay를 사용한다

 

 

02. 이력서 300개 폴더로 분류하기

 

파이썬으로 자동으로 이력서를 분류할 수 있다

import os 
from shutil import copy 
print(os.listdir('./data')) #폴더 안에 있는 데이터를 살펴본다 

for file in os.listdir('./data'):
	file, ext= file.split('.') #마침표 기준으로 확장자를 분리
	name, position = file.split('__') #언더바 두개를 기준으로 이름이랑 직무를 분리 
	src =f'./data/{file}.{ext} #data폴더 안에 파일 이름이랑 확장자
	dest_path= f'./data/{position}'
	
	if not os.path.exists(dest_path):
		os.makedirs(dest_path)#dest_path 라는 폴더가 없으면 makedirs로 만들어준다 
	
	dest =f'./data/{position}/{file}.{ext}' #직무폴더 아래에 파일 이름을 둔다 
	copy(src, dest)

☑️ shutil 모듈은 표준 라이브러리 중 하나로, 파일 및 디렉토리를 조작하는 데 사용할 수 있는 다양한 기능을 제공한다

💡 간단하게 파일 및 디렉토리를 복사, 이동, 이름 변경 등을 할 수 있으며, 파일 압축 및 트리 복사 등의 작업도 수행할 수 있다

 

03 파이썬 티켓팅 매크로

 

매크로란? →자주 사용하는 여러 개의 명령어를 묶어서 하나의 키 입력 동작으로 만든 것을 말함

💡selenium → 웹 브라우저를 코드로 조정할 때 쓰는 기술, 그때그때 찾아가면서 활용함

 

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC     

driver = webdriver.Chrome() 
wait = WebDriverWait(driver, 10)  #페이지가 완전히 이동할 때 까지 기다려야함 
# 티켓 예매 페이지
url='티켓예매페이지 주소'
driver.get(url)
data_element= driver.find_element(By.CSS_SELECTOR,'[data-date="2025-08-17 (일)"]')
data_element.click()
time_element= driver.find_element(By.CSS_SELECTOR,'[data-time="19:30"]')
time_element.click()

submit_element= driver.find_element(By.CSS_SELECTOR,'#booking-button')
submit_element.click()

# 로그인 페이지 
wait.until(EC.URL_mathces('/login')) # 주소가 login이 될때까지 대기 
username_element= driver.find_element(By.CSS_SELECTOR,'#username')
password_element= driver.find_element(By.CSS_SELECTOR,'#password')
username_element.sendkeys('아이디입력')
password_element.sendkeys('비밀번입력')
submit_element= driver.find_element(By.CSS_SELECTOR,'[type="submit"]')
submit_element.click()

# 좌석 선택 
wait.until(EC.URL_mathces('/seat')) #주소가 seat가 될때까지 대기
seat_element= driver.find_element(By.CSS_SELECTOR,'[data-seat="r"]')
seat_element.click()
submit_element= driver.find_element(By.CSS_SELECTOR,'#booking-button')
submit_element.click()

# 예매 완료 페이지
sleep(5) #5초 대기 
driver.quit()

 

 

2. 데이터 사이언스

 

01. 그래프로 대량 데이터 분석하기

jupyter note book → 데이터 사이언스 분야에서 쓰는 공책

 

import pandas as pd
import matplotlib.pyplot as plt #그래프를 그리는데 필요함
import seaborn as sns  #막대그래

plt.rc('font', famil='AppleGothic')
plt.rcParams['figure.figsize']=(10,5)

jeju_df=pd.read_csv('data.csv') #csv파일을 불러와서 데이터 확인

 

02.머신러닝으로 손글씨 인식하기

scikit-learn 라이브러리를 사용

 

from sklearn import datasets
import matplolib.pyplot as plt

digits= datasets.load_digite()
digits.images[1]

#머신러닝에서는 모델을 만든다 
from sklearn.model_selection import train_test_split #데이터들을 학습용,테스트용으로 나눈

☑️모델이란 어떤 입력을 받으면 사람처럼 알아서 대답을 내놓는 프로그램, 데이터를 가지고 학습 시켜서 만들어지는 프로그램이다

☑️갖고 있는 데이터 중에서 일부는 모델을 학습시키는데 사용, 나 머지 일부는 학습된 모델을 테스트 하는데 사용

 

 

3. 웹 개발 

03. 디스코드 ChaptGPT 봇 만들기

 

봇을 만들기 위해서 개발자 포털에 들어가야 한다

☑️개발자 포털에 들어간 후 bot 설정을 한 다음 discordpy 사이트의 코드를 활용하여 봇을 만든다

파이썬에서 chagpt를 활용하려면 유료버전을 구매해야함

 

import discord

intents = discord.Intents.default()
intents.message_content = True

client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f'{client.user} 로그인 완료')

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('지피티야'):
        await message.channel.send('네?')

client.run('토큰 작성')

728x90