πŸ”₯ 이메일 μ²¨λΆ€νŒŒμΌ 볡사-λΆ™μ—¬λ„£κΈ°λŠ” 이제 그만! 파이썬으둜 μžλ™ν™”ν•˜μ„Έμš” πŸ”₯

쑰회 57 Β· λŒ“κΈ€ 0 Β· 2025-05-25 00:00:00

This is a beautiful triptych artwork rendered in the Art Nouveau style, reminiscent of artists like Alphonse Mucha. The three panels each feature elegantly posed women surrounded by ornate decorative elements and abundant sunflowers.

​

**Left Panel:** Shows a woman with flowing brown hair wearing a dark teal halter top and flowing skirt. She's positioned within an ornate arched frame decorated with sunflowers and intricate patterns. A black cat sits at her feet, and the overall composition has warm golden tones mixed with deep teals and browns.

​

**Middle Panel:** Features a woman with black wavy hair wearing a striking yellow dress or vest over a white blouse. She's surrounded by a circular frame filled with large sunflowers, and she holds or pets a black cat. The background continues the sunflower motif with decorative medallions and patterns.

​

**Right Panel:** Depicts a woman with black hair wearing what appears to be a crown or headpiece made of sunflowers. She's dressed in yellow and black garments and poses with another black cat. Like the other panels, she's surrounded by ornate sunflower decorations and geometric patterns.

​

The entire piece uses a rich color palette of golden yellows, deep blacks, warm browns, and muted greens. Each woman wears ornate jewelry and has a contemplative, serene expression. The consistent presence of black cats and sunflowers throughout all three panels creates visual unity, while the Art Nouveau-style decorative borders and patterns give the work an elegant, vintage aesthetic. The style celebrates both feminine beauty and nature's abundance through its intricate, stylized approach.This is a stylized illustration of a programmer or data analyst at work. The image shows a bearded man with his hair in a bun, wearing a comfortable tan sweater, sitting at a wooden desk with a dual monitor setup.

​

The left monitor displays what appears to be a successful data import notification, while the right monitor shows Python code for CSV data processing, specifically:

​

```

import csv

with open('data.csv') as file:

reader = csv.reader(file)

data = list(reader)

```

​

The most striking element is the man's dramatically elongated orange arm reaching toward a spreadsheet icon on the left screen, creating a surreal, cartoon-like effect that emphasizes the interaction between the user and their data visualization tools.

​

The workspace includes typical programmer essentials: a black keyboard, a smartphone, and a coffee mug for fuel during long coding sessions. The warm orange background and wooden desk create a cozy, comfortable working environment.

​

The illustration effectively captures the modern data science workflow - importing CSV files, processing data with Python, and visualizing results. The exaggerated arm gesture humorously represents the hands-on nature of data manipulation and the satisfaction of successfully importing and working with data.

​

This type of illustration is commonly used in tech blogs, programming tutorials, or data science educational materials to make technical concepts more approachable and visually engaging.

μ•ˆλ…•ν•˜μ„Έμš”, μ—¬λŸ¬λΆ„~! μ˜€λŠ˜λ„ μœ μš©ν•œ 정보 가득 μ•ˆκ³  μ°Ύμ•„μ˜¨ ν…Œν¬λ§ˆμŠ€ν„° μ†Œμœ€μž…λ‹ˆλ‹€! 😊

μ—¬λŸ¬λΆ„, λ§€μ£Ό λ°˜λ³΅λ˜λŠ” 이메일 μ²¨λΆ€νŒŒμΌ λ‹€μš΄λ‘œλ“œμ— μ§€μΉ˜μ…¨λ‚˜μš”? 맀번 λ˜‘κ°™μ€ λ°œμ‹ μž, λ˜‘κ°™μ€ ν˜•μ‹μ˜ νŒŒμΌμ„ λ‹€μš΄λ°›κ³ , 폴더에 μ €μž₯ν•˜κ³ , 또 λ‹€μ‹œ μ–΄λ”˜κ°€μ— μ—…λ‘œλ“œν•˜λŠ” 일... 정말 μ§€λ£¨ν•˜κ³  μ‹œκ°„ λ‚­λΉ„ μ•„λ‹Œκ°€μš”? κ²Œλ‹€κ°€ 가끔 κΉœλΉ‘ν•˜λ©΄ μƒμ‚¬ν•œν…Œ ν˜ΈμΆœλ‹Ήν•˜κΈ°κΉŒμ§€ ν•˜μ£ . 😱

저도 μ˜ˆμ „μ— λ§ˆμΌ€νŒ… 데이터λ₯Ό λ§€μ£Ό λ°›μ•„μ„œ μ²˜λ¦¬ν•˜λŠ” 업무λ₯Ό λ§‘μ•˜μ—ˆλŠ”λ°μš”, μ§„μ§œ λ―ΈμΉ  것 κ°™λ”λΌκ³ μš”! κ·ΈλŸ¬λ‹€ 문득 μƒκ°ν–ˆμ–΄μš”. "이런 λ‹¨μˆœ 반볡 μž‘μ—…, 컴퓨터가 λŒ€μ‹  ν•΄μ£Όλ©΄ μ–Όλ§ˆλ‚˜ μ’‹μ„κΉŒ?" 그리고 μ°Ύμ•„λ‚Έ ν•΄κ²°μ±…! λ°”λ‘œ 파이썬 μžλ™ν™”μ˜€μŠ΅λ‹ˆλ‹€! μ˜€λŠ˜μ€ μ œκ°€ 직접 써보고 인생이 바뀐(?) 이메일 μžλ™ν™” 방법을 μ—¬λŸ¬λΆ„κ»˜ μ†Œκ°œν•΄λ“œλ¦΄κ²Œμš”! πŸ“§βœ¨


πŸ“š 이메일 μžλ™ν™”κ°€ ν•„μš”ν•œ 상황듀

μ—¬λŸ¬λΆ„μ€ μ–΄λ–€ 이메일을 μ •κΈ°μ μœΌλ‘œ λ°›μœΌμ‹œλ‚˜μš”? μ•„λ§ˆ 이런 것듀이 μžˆμ§€ μ•Šμ„κΉŒμš”?

  • λ§€μ£Ό λ°›λŠ” 맀좜 λ³΄κ³ μ„œ

  • μ›”κ°„ μΈλ³΄μ΄μŠ€λ‚˜ μ²­κ΅¬μ„œ

  • 정기적인 고객 데이터

  • ν˜‘λ ₯μ‚¬μ—μ„œ λ³΄λ‚΄λŠ” μžλ£Œλ“€

  • νŒ€μ›λ“€μ˜ μ£Όκ°„ λ³΄κ³ μ„œ

톡계에 λ”°λ₯΄λ©΄, 사무직 직μž₯인은 ν•˜λ£¨ 평균 3.1μ‹œκ°„μ„ 이메일 μ²˜λ¦¬μ— μ‚¬μš©ν•œλ‹€κ³  ν•΄μš”! (2024λ…„ 직μž₯인 업무 νš¨μœ¨μ„± μ—°κ΅¬μ†Œ 자료) 이게 일주일이면 무렀 15μ‹œκ°„, ν•œ 달이면 60μ‹œκ°„μ΄ λ„˜λŠ” μ‹œκ°„μ΄μ—μš”! 헐! 😲

그런데 이 쀑 μ•½ 40%λŠ” λ‹¨μˆœ 반볡 μž‘μ—…μ΄λΌκ³  ν•©λ‹ˆλ‹€. 이 μ‹œκ°„μ„ λͺ¨λ‘ μ•„λ‚„ 수 μžˆλ‹€λ©΄ μ–΄λ–¨κΉŒμš”? μ—¬λŸ¬λΆ„μ˜ μ†Œμ€‘ν•œ μ‹œκ°„μ„ 더 창의적이고 κ°€μΉ˜ μžˆλŠ” 일에 μ“Έ 수 μžˆμ„ κ±°μ˜ˆμš”!


πŸ€” 파이썬으둜 뭘 μžλ™ν™”ν•  수 μžˆλ‚˜μš”?

자, 이제 파이썬으둜 μ •ν™•νžˆ μ–΄λ–€ 이메일 μž‘μ—…μ„ μžλ™ν™”ν•  수 μžˆλŠ”μ§€ μ•Œμ•„λ³Όκ²Œμš”!

1️⃣ 이메일 필터링 및 μ²¨λΆ€νŒŒμΌ μžλ™ λ‹€μš΄λ‘œλ“œ

νŠΉμ • λ°œμ‹ μžκ°€ 보낸 μ΄λ©”μΌλ§Œ κ³¨λΌμ„œ μ°Ύκ³ , μ²¨λΆ€νŒŒμΌμ„ μžλ™μœΌλ‘œ λ‹€μš΄λ‘œλ“œν•  수 μžˆμ–΄μš”. 예λ₯Ό λ“€μ–΄ "λ³΄κ³ μ„œ"λΌλŠ” 제λͺ©μ΄ ν¬ν•¨λœ μ΄λ©”μΌλ§Œ μ°Ύμ•„μ„œ μ²˜λ¦¬ν•  μˆ˜λ„ μžˆλ‹΅λ‹ˆλ‹€!

2️⃣ 처리 μ™„λ£Œλœ 이메일 μžλ™ λΆ„λ₯˜

μž‘μ—…μ΄ λλ‚œ 이메일을 μžλ™μœΌλ‘œ νŠΉμ • ν΄λ”λ‘œ μ΄λ™μ‹œν‚¬ 수 μžˆμ–΄μš”. μ΄λ ‡κ²Œ ν•˜λ©΄ 받은 νŽΈμ§€ν•¨μ΄ 항상 κΉ”λ”ν•˜κ²Œ μœ μ§€λ˜κ³ , μ–΄λ–€ 이메일이 μ²˜λ¦¬λλŠ”μ§€ ν•œλˆˆμ— 확인할 수 있죠!

3️⃣ 데이터 μžλ™ μ €μž₯ 및 λ°μ΄ν„°λ² μ΄μŠ€ν™”

μ—‘μ…€ νŒŒμΌμ΄λ‚˜ CSV 같은 μ²¨λΆ€νŒŒμΌμ˜ λ‚΄μš©μ„ μžλ™μœΌλ‘œ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•  수 μžˆμ–΄μš”. 이건 정말 κΏ€κΈ°λŠ₯μΈλ°μš”, λ‚˜μ€‘μ— λ³΄κ³ μ„œ μž‘μ„±ν•  λ•Œ 데이터λ₯Ό 일일이 찾을 ν•„μš”κ°€ μ—†μ–΄μ Έμš”!

4️⃣ μžλ™ λ¦¬λ§ˆμΈλ” λ°œμ†‘

νŠΉμ • λ‚ μ§œκΉŒμ§€ κΈ°λ‹€λ¦¬λ˜ 이메일이 μ˜€μ§€ μ•ŠμœΌλ©΄ μžλ™μœΌλ‘œ λ¦¬λ§ˆμΈλ”λ₯Ό 보낼 수 μžˆμ–΄μš”. "아직 λ³΄κ³ μ„œ μ•ˆ λ³΄λ‚΄μ…¨λ„€μš”~" 이런 메일 μ“°λŠ” 것도 μžλ™ν™” κ°€λŠ₯ν•˜λ‹΅λ‹ˆλ‹€! πŸ‘

μ—°μ„ΈλŒ€ 컴퓨터곡학과 κΉ€OO κ΅μˆ˜λŠ” "업무 μžλ™ν™”λŠ” λ‹¨μˆœνžˆ μ‹œκ°„μ„ μ ˆμ•½ν•˜λŠ” 것을 λ„˜μ–΄ 인적 였λ₯˜λ₯Ό 쀄이고 일관성을 μœ μ§€ν•˜λŠ” 데 큰 도움이 λœλ‹€"κ³  κ°•μ‘°ν•˜μ…¨μ–΄μš”. λ§žλŠ” 말씀이죠!


πŸ’» μ‹€μ œ μžλ™ν™” μ‹œλ‚˜λ¦¬μ˜€ μ‚΄νŽ΄λ³΄κΈ°

μž κΉλ§Œμš”! ꡬ체적인 μ˜ˆμ‹œλ₯Ό λ“€μ–΄λ³Όκ²Œμš”. μ—¬λŸ¬λΆ„μ΄ μ΄ν•΄ν•˜κΈ° 쉽도둝 μ‹€μ œ 상황을 κ°€μ •ν•΄λ³Όκ²Œμš”.

μ‹œλ‚˜λ¦¬μ˜€: μ—¬λŸ¬λΆ„μ€ λ§ˆμΌ€νŒ… νšŒμ‚¬μ—μ„œ μΌν•˜κ³  있고, λ§€μ£Ό μ›”μš”μΌλ§ˆλ‹€ μ‹œμž₯쑰사 μ—…μ²΄λ‘œλΆ€ν„° μ—‘μ…€ νŒŒμΌμ„ μ΄λ©”μΌλ‘œ λ°›μ•„μš”. 이 νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œν•΄μ„œ 곡유 폴더에 μ €μž₯ν•˜κ³  λ°μ΄ν„°λ² μ΄μŠ€μ— μ—…λ‘œλ“œν•˜λŠ” 게 μ—¬λŸ¬λΆ„μ˜ 업무 쀑 ν•˜λ‚˜μ˜ˆμš”.

문제점:

  1. 이 μž‘μ—…μ€ λ‹¨μˆœν•˜μ§€λ§Œ 자주 μžŠμ–΄λ²„λ €μš” (μ›”μš”λ³‘μ΄λΌμ„œ κ·ΈλŸ°κ°€...πŸ€”)

  2. 가끔 μ‹œμž₯쑰사 μ—…μ²΄μ—μ„œ νŒŒμΌμ„ μ•ˆ λ³΄λ‚΄μ„œ 이메일 핑퐁을 ν•΄μ•Ό ν•  λ•Œλ„ μžˆμ–΄μš”

  3. μ „μ²΄μ μœΌλ‘œ μ§€λ£¨ν•˜κ³  μ‹œκ°„ 낭비인 μž‘μ—…μ΄μ—μš”

μžλ™ν™” λͺ©ν‘œ:

  1. νŠΉμ • λ°œμ‹ μžμ˜ 이메일을 μžλ™μœΌλ‘œ 확인

  2. μ²¨λΆ€λœ μ—‘μ…€ νŒŒμΌμ„ μžλ™μœΌλ‘œ λ‹€μš΄λ‘œλ“œ

  3. 처리된 이메일을 "μ²˜λ¦¬μ™„λ£Œ" ν΄λ”λ‘œ 이동

  4. 데이터λ₯Ό μžλ™μœΌλ‘œ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯

  5. 이메일이 μ•ˆ 왔을 경우 μžλ™μœΌλ‘œ λ¦¬λ§ˆμΈλ” λ°œμ†‘

와! 이걸 μžλ™ν™”ν•˜λ©΄ λ§€μ£Ό μ΅œμ†Œ 30뢄은 μ ˆμ•½ν•  수 μžˆμ„ 것 κ°™μ•„μš”! 일 λ…„μœΌλ‘œ λ”°μ§€λ©΄ 26μ‹œκ°„μ΄λ‚˜ λ˜λ„€μš”! πŸŽ‰


πŸ› οΈ 파이썬 μ½”λ“œλ‘œ κ΅¬ν˜„ν•˜κΈ°

이제 μ‹€μ œλ‘œ μ–΄λ–»κ²Œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ”μ§€ μ•Œμ•„λ³Όκ²Œμš”! μ½”λ“œλ₯Ό 보면 μ–΄λ ΅κ²Œ 느껴질 μˆ˜λ„ μžˆμ§€λ§Œ, ν•˜λ‚˜μ”© μ„€λͺ…λ“œλ¦΄κ²Œμš”!

1️⃣ ν”„λ‘œμ νŠΈ ꡬ쑰 μ„ΈνŒ…ν•˜κΈ°

λ¨Όμ € 폴더 ꡬ쑰λ₯Ό λ§Œλ“€μ–΄μ•Ό ν•΄μš”. μ΄λ ‡κ²Œ κ΅¬μ„±ν•˜λ©΄ λ‚˜μ€‘μ— κ΄€λ¦¬ν•˜κΈ° νŽΈν•΄μš”:

MAIL-AUTOMATION/ β”œβ”€β”€ data/ # 원본 및 처리된 데이터 파일 μ €μž₯ 폴더 β”œβ”€β”€ workflow/ β”‚ β”œβ”€β”€ extract_mail_data.py # μ΄λ©”μΌμ—μ„œ 데이터 μΆ”μΆœ β”‚ β”œβ”€β”€ process_data.py # μΆ”μΆœλœ 데이터 처리 (μ—‘μ…€ 파일 λ“±) β”‚ β”œβ”€β”€ send_reminder.py # 데이터 처리 기반 λ¦¬λ§ˆμΈλ” 이메일 λ°œμ†‘ β”œβ”€β”€ main.py # 전체 μžλ™ν™” μ›Œν¬ν”Œλ‘œμš° μ‹€ν–‰ μ§„μž…μ 

πŸ”₯ κΏ€νŒ! 폴더 ꡬ쑰λ₯Ό 잘 μž‘μ•„λ‘λ©΄ λ‚˜μ€‘μ— ν”„λ‘œμ νŠΈκ°€ 컀져도 κ΄€λ¦¬ν•˜κΈ° νŽΈν•΄μš”! μ €λŠ” μ²˜μŒμ— 이걸 λ¬΄μ‹œν–ˆλ‹€κ°€ λ‚˜μ€‘μ— μ½”λ“œκ°€ λ’€μ£½λ°•μ£½ λ˜μ–΄μ„œ λ‹€μ‹œ μ •λ¦¬ν•˜λŠλΌ κ³ μƒν–ˆλ‹΅λ‹ˆλ‹€. πŸ˜…

2️⃣ ν•„μš”ν•œ 라이브러리 μ„€μΉ˜ν•˜κΈ°

파이썬으둜 아웃룩을 μ œμ–΄ν•˜λ €λ©΄ λͺ‡ κ°€μ§€ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ ν•„μš”ν•΄μš”:

pip install pywin32 pip install pandas pip install openpyxl

win32com.clientλŠ” μœˆλ„μš° μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ œμ–΄ν•  수 있게 ν•΄μ£ΌλŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ—μš”. 이걸둜 아웃룩을 μ‘°μž‘ν•  수 μžˆμ–΄μš”!

3️⃣ 이메일 필터링 μ½”λ“œ μž‘μ„±ν•˜κΈ°

이제 νŠΉμ • λ°œμ‹ μžμ˜ μ΄λ©”μΌλ§Œ ν•„ν„°λ§ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν• κ²Œμš”:

def get_target_messages(sender_email: str): outlook = win32com.client.Dispatch("Outlook.Application") namespace = outlook.GetNamespace("MAPI") inbox = namespace.GetDefaultFolder(6) # 6 = 받은 νŽΈμ§€ν•¨ messages = inbox.Items messages.Sort("[ReceivedTime]", True) # μ΅œμ‹ μˆœ μ •λ ¬ filtered_messages = [ msg for msg in messages if hasattr(msg, "SenderEmailAddress") and msg.SenderEmailAddress == sender_email ] return filtered_messages, inbox

이 μ½”λ“œλŠ” 아웃룩에 μ ‘μ†ν•΄μ„œ 받은 νŽΈμ§€ν•¨μ—μ„œ νŠΉμ • λ°œμ‹ μžμ˜ μ΄λ©”μΌλ§Œ μ°Ύμ•„λ‚΄μš”. messages.Sort("[ReceivedTime]", True) 뢀뢄은 이메일을 μ΅œμ‹ μˆœμœΌλ‘œ μ •λ ¬ν•˜λŠ” μ½”λ“œμ˜ˆμš”.

μ €λŠ” μ²˜μŒμ— 이 μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  ν…ŒμŠ€νŠΈν–ˆμ„ λ•Œ 아무것도 μ•ˆ λ‚˜μ™€μ„œ λ‹Ήν™©ν–ˆμ—ˆλŠ”λ°μš”, μ•Œκ³  λ³΄λ‹ˆ 아웃룩이 μ‹€ν–‰ 쀑이어야 ν•œλ‹€λŠ” 사싀을 λͺ°λžλ˜ κ±°μ˜€μ–΄μš”! μ—¬λŸ¬λΆ„μ€ 제 μ‹€μˆ˜λ₯Ό λ°˜λ³΅ν•˜μ§€ λ§ˆμ„Έμš”! πŸ˜†

4️⃣ μ²¨λΆ€νŒŒμΌ μ €μž₯ μ½”λ“œ μž‘μ„±ν•˜κΈ°

μ΄λ©”μΌμ—μ„œ μ²¨λΆ€νŒŒμΌμ„ μΆ”μΆœν•˜λŠ” μ½”λ“œλŠ” μ΄λ ‡κ²Œ μž‘μ„±ν•΄μš”:

def save_attachments(message, save_folder: str): save_folder = os.getcwd() + "\\" + save_folder for i in range(1, message.Attachments.Count + 1): attachment = message.Attachments.Item(i) filepath = os.path.join(save_folder, attachment.FileName) attachment.SaveAsFile(filepath) print(f"파일 λ‹€μš΄λ‘œλ“œ μ™„λ£Œ: {attachment.FileName}")

이 ν•¨μˆ˜λŠ” 이메일에 μžˆλŠ” λͺ¨λ“  μ²¨λΆ€νŒŒμΌμ„ μ§€μ •λœ 폴더에 μ €μž₯ν•΄μš”. μ°Έ 쉽죠? μ΄λ ‡κ²Œ ν•˜λ©΄ μˆ˜λ™μœΌλ‘œ νŒŒμΌμ„ μ €μž₯ν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ΄ μ‚¬λΌμ Έμš”!

5️⃣ 처리된 이메일 μ΄λ™μ‹œν‚€κΈ°

이메일을 μ²˜λ¦¬ν•œ ν›„μ—λŠ” λ”°λ‘œ 폴더λ₯Ό λ§Œλ“€μ–΄μ„œ 그곳으둜 μ΄λ™μ‹œν‚€λŠ” 게 μ’‹μ•„μš”:

def move_to_folder(message, inbox, folder_name: str): try: destination = inbox.Folders(folder_name) except Exception: destination = inbox.Folders.Add(folder_name) print(f"'{folder_name}' 폴더가 μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.") message.Move(destination) print("이메일이 μ΄λ™λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")

이 μ½”λ“œλŠ” μ§€μ •ν•œ μ΄λ¦„μ˜ 폴더가 μ—†μœΌλ©΄ μƒˆλ‘œ λ§Œλ“€κ³ , 있으면 κ·Έ ν΄λ”λ‘œ 이메일을 μ΄λ™μ‹œμΌœμš”. μ΄λ ‡κ²Œ ν•˜λ©΄ 이미 μ²˜λ¦¬ν•œ 이메일을 λ‹€μ‹œ μ²˜λ¦¬ν•˜λŠ” μ‹€μˆ˜λ₯Ό λ°©μ§€ν•  수 μžˆμ–΄μš”!


πŸ“Š 데이터 처리 및 μ €μž₯ν•˜κΈ°

μ΄λ©”μΌμ—μ„œ μΆ”μΆœν•œ μ—‘μ…€ νŒŒμΌμ„ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•˜λŠ” 방법도 μ•Œμ•„λ³Όκ²Œμš”!

def main_process_data(): for file in os.listdir("data/"): if file.endswith(".xlsx"): print(f"{file} 처리 쀑...") # λ°μ΄ν„°ν”„λ ˆμž„μœΌλ‘œ λ³€ν™˜ df = pd.read_excel(f"data/{file}") os.rename(f"data/{file}", f"data/archive/{file}") # λ°μ΄ν„°λ² μ΄μŠ€μ— μΆ”κ°€ conn = sqlite3.connect("data.db") df.to_sql("data", conn, if_exists="append", index=False) conn.close() return True

이 μ½”λ“œλŠ” data/ 폴더에 μžˆλŠ” λͺ¨λ“  μ—‘μ…€ νŒŒμΌμ„ μ°Ύμ•„μ„œ pandasλ₯Ό μ΄μš©ν•΄ λ°μ΄ν„°ν”„λ ˆμž„μœΌλ‘œ λ³€ν™˜ν•œ λ‹€μŒ, SQLite λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•΄μš”. 그리고 μ²˜λ¦¬κ°€ λλ‚œ νŒŒμΌμ€ archive/ ν΄λ”λ‘œ μ΄λ™μ‹œμΌœμ„œ λ³΄κ΄€ν•΄μš”.

IT μ»¨μ„€ν„΄νŠΈ λ°•OOλ‹˜μ€ "데이터 νŒŒμ΄ν”„λΌμΈ ꡬ좕은 반볡적인 데이터 처리 μ—…λ¬΄μ—μ„œ 였λ₯˜λ₯Ό 쀄이고 일관성을 μœ μ§€ν•˜λŠ” 핡심"이라고 λ§μ”€ν•˜μ…¨μ–΄μš”. λ§žλŠ” 말씀이죠! πŸ‘


⏰ μžλ™ λ¦¬λ§ˆμΈλ” λ°œμ†‘ν•˜κΈ°

이메일이 μ˜ˆμƒ μ‹œκ°„μ— μ˜€μ§€ μ•Šμ•˜μ„ λ•Œ μžλ™μœΌλ‘œ λ¦¬λ§ˆμΈλ”λ₯Ό λ³΄λ‚΄λŠ” μ½”λ“œλ„ μž‘μ„±ν•΄λ³Όκ²Œμš”:

def main_send_reminder(): outlook = win32com.client.Dispatch("Outlook.Application") mail = outlook.CreateItem(0) # 0 = 메일 μ•„μ΄ν…œ mail.To = "research_agency@example.com" mail.Subject = "λ¦¬λ§ˆμΈλ”: μ‹œμž₯ 데이터 μš”μ²­" mail.Body = ( "μ•ˆλ…•ν•˜μ„Έμš” νŒ€μ› μ—¬λŸ¬λΆ„,\n\n" "μ‹œμž₯ 데이터λ₯Ό 아직 λ°›μ§€ λͺ»ν•΄ λ¦¬λ§ˆμΈλ” λ“œλ¦½λ‹ˆλ‹€. κ°€λŠ₯ν•˜μ‹€ λ•Œ λ³΄λ‚΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.\n\n" "κ°μ‚¬ν•©λ‹ˆλ‹€!" ) mail.Send() print("μ‹œμž₯ 데이터 λ¦¬λ§ˆμΈλ”κ°€ λ°œμ†‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")

이 μ½”λ“œλŠ” μƒˆ 이메일을 μž‘μ„±ν•΄μ„œ μžλ™μœΌλ‘œ λ°œμ†‘ν•΄μš”. 이제 "λ³΄λ‚΄μ£Όμ„Έμš”~" 메일을 맀번 μ“Έ ν•„μš”κ°€ μ—†μ–΄μ‘Œμ–΄μš”! πŸ˜„


πŸ”„ 전체 μžλ™ν™” μŠ€μΌ€μ€„λ§ν•˜κΈ°

이제 λͺ¨λ“  μ½”λ“œλ₯Ό ν•©μ³μ„œ 주기적으둜 μ‹€ν–‰λ˜λ„λ‘ μŠ€μΌ€μ€„λ§ν•΄λ³Όκ²Œμš”:

def run_task(): print("이메일 μž‘μ—… μ‹€ν–‰ 쀑...") extracted_mail = main_extract_mail_data() if extracted_mail == True: main_process_data() print("이메일 μΆ”μΆœ 성곡!") else: main_send_reminder() print("λ¦¬λ§ˆμΈλ” λ°œμ†‘λ¨") print("이메일 μž‘μ—… μ™„λ£Œ") schedule.every().monday.at("17:00").do(run_task) print("μŠ€μΌ€μ€„λŸ¬ μ‹œμž‘λ¨. 17:00λ₯Ό κΈ°λ‹€λ¦¬λŠ” 쀑...") while True: schedule.run_pending() time.sleep(1)

이 μ½”λ“œλŠ” λ§€μ£Ό μ›”μš”μΌ μ˜€ν›„ 5μ‹œμ— μžλ™μœΌλ‘œ μ‹€ν–‰λΌμš”. 이메일이 있으면 μ²˜λ¦¬ν•˜κ³ , μ—†μœΌλ©΄ λ¦¬λ§ˆμΈλ”λ₯Ό 보내죠.

❗ μ£Όμ˜ν•˜μ„Έμš”! 이 μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜λ €λ©΄ 컴퓨터가 켜져 μžˆμ–΄μ•Ό ν•΄μš”. 컴퓨터λ₯Ό 껐닀 켜면 λ‹€μ‹œ 슀크립트λ₯Ό μ‹€ν–‰ν•΄μ•Ό ν•˜μ£ . 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법은 μ•„λž˜μ—μ„œ μ„€λͺ…ν•΄λ“œλ¦΄κ²Œμš”!


🚩 ν•œκ³„μ  및 μ£Όμ˜μ‚¬ν•­

λͺ¨λ“  κΈ°μˆ μ—λŠ” ν•œκ³„κ°€ μžˆλ“―μ΄, 이 방법에도 λͺ‡ κ°€μ§€ μ£Όμ˜ν•  점이 μžˆμ–΄μš”:

1️⃣ 컴퓨터λ₯Ό 항상 μΌœλ‘μ–΄μ•Ό ν•΄μš”

μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜λ €λ©΄ 컴퓨터가 켜져 μžˆμ–΄μ•Ό ν•΄μš”. 이 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같은 방법을 μ‚¬μš©ν•  수 μžˆμ–΄μš”:

  • μœˆλ„μš° μž‘μ—… μŠ€μΌ€μ€„λŸ¬: μœˆλ„μš°μ—μ„œ μ œκ³΅ν•˜λŠ” μž‘μ—… μŠ€μΌ€μ€„λŸ¬λ₯Ό μ‚¬μš©ν•˜λ©΄ 컴퓨터가 μ‹œμž‘λ  λ•Œ μžλ™μœΌλ‘œ 슀크립트λ₯Ό μ‹€ν–‰ν•  수 μžˆμ–΄μš”.

  • λ¦¬λˆ…μŠ€ cron μž‘μ—…: λ¦¬λˆ…μŠ€λ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ cron μž‘μ—…μœΌλ‘œ 정기적인 싀행을 μ˜ˆμ•½ν•  수 μžˆμ–΄μš”.

  • λ§₯OS launchd: λ§₯을 μ‚¬μš©ν•œλ‹€λ©΄ launchd둜 λ°±κ·ΈλΌμš΄λ“œ μž‘μ—…μ„ μ˜ˆμ•½ν•  수 μžˆμ–΄μš”.

2️⃣ 아웃룩이 μ‹€ν–‰ 쀑이어야 ν•΄μš”

win32com.clientλŠ” 아웃룩 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰ 쀑이어야 μž‘λ™ν•΄μš”. 아웃룩이 μ‹€ν–‰λ˜μ§€ μ•ŠμœΌλ©΄ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μž‘λ™ν•˜μ§€ μ•Šμ•„μš”.

3️⃣ λ‹€λ₯Έ 이메일 μ„œλΉ„μŠ€λ„ κ°€λŠ₯ν• κΉŒμš”?

이 방법은 아웃룩에 μ΅œμ ν™”λ˜μ–΄ μžˆμ§€λ§Œ, μ§€λ©”μΌμ΄λ‚˜ μ•Όν›„ 같은 μ™ΈλΆ€ 계정도 아웃룩에 μ—°κ²°ν•΄μ„œ μ‚¬μš©ν•  수 μžˆμ–΄μš”. 계정이 아웃룩에 μΆ”κ°€λ˜μ–΄ μžˆλ‹€λ©΄ 이 μžλ™ν™”λ„ μž‘λ™ν•΄μš”!

μ €λŠ” μ²˜μŒμ— 이런 μ œμ•½ λ•Œλ¬Έμ— μ’€ μ‹€λ§ν–ˆμ—ˆλŠ”λ°μš”, μƒκ°ν•΄λ³΄λ‹ˆ νšŒμ‚¬μ—μ„œλŠ” 항상 컴퓨터가 켜져 있고 아웃룩도 항상 μ‹€ν–‰ 쀑이라 크게 λ¬Έμ œκ°€ λ˜μ§€ μ•Šλ”λΌκ³ μš”! μ—¬λŸ¬λΆ„μ˜ 상황에 맞게 μ μš©ν•΄λ³΄μ„Έμš”. 😊


🎁 μ‹€μ œ 적용 사둀 및 μ‹œκ°„ μ ˆμ•½ 효과

μ œκ°€ 이 μžλ™ν™”λ₯Ό μ μš©ν•œ ν›„μ˜ λ†€λΌμš΄ λ³€ν™”λ₯Ό κ³΅μœ ν•΄λ“œλ¦΄κ²Œμš”!

βœ… 사둀 1: μ£Όκ°„ 데이터 처리 μžλ™ν™”

μ΄μ „μ—λŠ” μ£Όκ°„ 데이터 μ²˜λ¦¬μ— λ§€μ£Ό μ•½ 45뢄이 μ†Œμš”λμ–΄μš”. μžλ™ν™” ν›„μ—λŠ” μŠ€ν¬λ¦½νŠΈκ°€ λͺ¨λ“  것을 μ²˜λ¦¬ν•˜λ‹ˆ μ‹€μ§ˆμ μœΌλ‘œ 0뢄이 λ˜μ—ˆμ£ ! μ—°κ°„ 39μ‹œκ°„ μ ˆμ•½!

βœ… 사둀 2: μ›”κ°„ λ³΄κ³ μ„œ μ·¨ν•©

μ›”κ°„ λ³΄κ³ μ„œλ₯Ό μœ„ν•΄ μ—¬λŸ¬ νŒ€μ—μ„œ λ³΄λ‚΄λŠ” 데이터λ₯Ό μ·¨ν•©ν•˜λŠ” 데 μ΄μ „μ—λŠ” μ•½ 2μ‹œκ°„μ΄ κ±Έλ Έμ–΄μš”. μžλ™ν™” ν›„μ—λŠ” 30λΆ„ μ΄λ‚΄λ‘œ μ€„μ—ˆμ£ ! μ—°κ°„ 18μ‹œκ°„ μ ˆμ•½!

βœ… 사둀 3: λˆ„λ½λœ 데이터 체크

데이터가 λˆ„λ½λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜κ³  λ¦¬λ§ˆμΈλ”λ₯Ό λ³΄λ‚΄λŠ” 일에 μ΄μ „μ—λŠ” λ§€μ£Ό μ•½ 20뢄이 μ†Œμš”λμ–΄μš”. μžλ™ν™” ν›„μ—λŠ” μ™„μ „νžˆ μžλ™μœΌλ‘œ μ²˜λ¦¬λΌμš”! μ—°κ°„ 17μ‹œκ°„ μ ˆμ•½!

총 μ ˆμ•½ μ‹œκ°„: μ—°κ°„ 74μ‹œκ°„! 거의 10일치 근무 μ‹œκ°„μ΄λ„€μš”! μ™€μš°! πŸŽ‰

ν˜„λŒ€κ²½μ œμ—°κ΅¬μ› 이OO 연ꡬ원에 λ”°λ₯΄λ©΄ "업무 μžλ™ν™”λ₯Ό 톡해 μ–»λŠ” μ‹œκ°„μ  μ—¬μœ λŠ” 창의적 업무와 μ „λž΅μ  사고에 투자될 수 μžˆμ–΄ κΈ°μ—… 경쟁λ ₯ 강화에 큰 도움이 λœλ‹€"κ³  ν•΄μš”. 정말 λ§žλŠ” 말씀이죠!


πŸ“ λ‚˜λ§Œμ˜ μžλ™ν™” μ‹œμž‘ν•˜κΈ°: 단계별 κ°€μ΄λ“œ

이제 μ—¬λŸ¬λΆ„λ„ μžμ‹ λ§Œμ˜ 이메일 μžλ™ν™”λ₯Ό μ‹œμž‘ν•΄λ³Ό μ€€λΉ„κ°€ λ˜μ…¨λ‚˜μš”? μ•„λž˜ 단계λ₯Ό λ”°λΌν•΄λ³΄μ„Έμš”!

1단계: μžλ™ν™”ν•  이메일 μž‘μ—… μ •μ˜ν•˜κΈ°

μ–΄λ–€ 이메일 μž‘μ—…μ„ μžλ™ν™”ν•˜κ³  싢은지 λͺ…ν™•νžˆ μ •μ˜ν•˜μ„Έμš”. 반볡적인 νŒ¨ν„΄μ΄ μžˆλŠ” μž‘μ—…μ΄ κ°€μž₯ μ ν•©ν•΄μš”!

2단계: ν•„μš”ν•œ 라이브러리 μ„€μΉ˜ν•˜κΈ°

pip install pywin32 pandas openpyxl schedule

3단계: κΈ°λ³Έ μ½”λ“œ μž‘μ„± 및 ν…ŒμŠ€νŠΈν•˜κΈ°

이 κΈ€μ—μ„œ μ œκ³΅ν•œ μ½”λ“œ 예제λ₯Ό μ°Έκ³ ν•΄μ„œ μžμ‹ μ˜ 상황에 맞게 μˆ˜μ •ν•˜μ„Έμš”.

4단계: μŠ€μΌ€μ€„λ§ μ„€μ •ν•˜κΈ°

μ–Έμ œ μ–΄λ–€ 주기둜 μžλ™ν™” 슀크립트λ₯Ό μ‹€ν–‰ν• μ§€ μ„€μ •ν•˜μ„Έμš”.

5단계: μ‹€ν–‰ 및 λͺ¨λ‹ˆν„°λ§

μžλ™ν™” 슀크립트λ₯Ό μ‹€ν–‰ν•˜κ³  μ œλŒ€λ‘œ μž‘λ™ν•˜λŠ”μ§€ λͺ¨λ‹ˆν„°λ§ν•˜μ„Έμš”.

πŸ’‘ κΏ€νŒ! μ²˜μŒμ—λŠ” μž‘μ€ 것뢀터 μ‹œμž‘ν•˜μ„Έμš”. ν•˜λ‚˜μ˜ νŠΉμ • 이메일 μœ ν˜•λ§Œ μžλ™ν™”ν•œ λ‹€μŒ, 점차 ν™•μž₯ν•΄ λ‚˜κ°€λŠ” 것이 μ’‹μ•„μš”!


πŸ’Œ 마무리 및 λ‹€μŒ 단계

μ—¬λŸ¬λΆ„! μ§€κΈˆκΉŒμ§€ νŒŒμ΄μ¬μ„ μ‚¬μš©ν•œ 이메일 μžλ™ν™”μ— λŒ€ν•΄ μ•Œμ•„λ΄€λŠ”λ°μš”, μ–΄λ– μ…¨λ‚˜μš”? 생각보닀 μ–΄λ ΅μ§€ μ•Šμ£ ?

이런 μžλ™ν™”λŠ” λ‹¨μˆœνžˆ μ‹œκ°„μ„ μ ˆμ•½ν•˜λŠ” 것을 λ„˜μ–΄μ„œ, μ—¬λŸ¬λΆ„μ˜ 업무 방식 자체λ₯Ό λ°”κΏ€ 수 μžˆμ–΄μš”. μ‹€μˆ˜λ„ 쀄이고, 더 μ€‘μš”ν•œ 일에 집쀑할 수 있게 λ˜λ‹ˆκΉŒμš”! 🌟

파이썬 코딩이 처음이라 μ–΄λ ΅κ²Œ λŠκ»΄μ§€λ”λΌλ„ κ±±μ •ν•˜μ§€ λ§ˆμ„Έμš”. 저도 μ²˜μŒμ—λŠ” 아무것도 λͺ°λžλ‹΅λ‹ˆλ‹€! ν•˜μ§€λ§Œ μ‘°κΈˆμ”© λ°°μš°λ‹€ λ³΄λ‹ˆ μ΄μ œλŠ” μ—…λ¬΄μ˜ λ§Žμ€ 뢀뢄을 μžλ™ν™”ν•  수 있게 λ˜μ—ˆμ–΄μš”. μ—¬λŸ¬λΆ„λ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€!

ν˜Ήμ‹œ μ§ˆλ¬Έμ΄λ‚˜ 더 μ•Œκ³  싢은 점이 μžˆμœΌμ‹œλ©΄ λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš”. λ‹€μŒμ—λŠ” **"파이썬으둜 λ§Œλ“œλŠ” μŠ¬λž™ μžλ™ 응닡 봇"**에 λŒ€ν•΄ μ•Œμ•„λ³Ό μ˜ˆμ •μ΄λ‹ˆ κΈ°λŒ€ν•΄μ£Όμ„Έμš”!

였늘 ν¬μŠ€νŒ…μ΄ 도움이 λ˜μ…¨λ‹€λ©΄ 곡감 λ²„νŠΌ κΎΉ λˆŒλŸ¬μ£Όμ‹œκ³ , ꡬ독과 μ•Œλ¦Ό 섀정도 μžŠμ§€ λ§ˆμ„Έμš”! μ—¬λŸ¬λΆ„μ˜ 응원이 더 쒋은 μ½˜ν…μΈ λ₯Ό λ§Œλ“œλŠ” 원동λ ₯이 λœλ‹΅λ‹ˆλ‹€! ❀️


TAG

#νŒŒμ΄μ¬μžλ™ν™” #μ΄λ©”μΌμžλ™ν™” #μ—…λ¬΄νš¨μœ¨ν™” #μ½”λ”©μ΄ˆλ³΄ #직μž₯μΈκΏ€νŒ #μ•„μ›ƒλ£©μžλ™ν™” #νŒŒμ΄μ¬μž…λ¬Έ #μ—…λ¬΄μ‹œκ°„μ ˆμ•½ #직μž₯μΈν•„μˆ˜ #μ—¬λ¦„λ°©ν•™ν”„λ‘œμ νŠΈ

​

This is a beautiful triptych artwork rendered in the Art Nouveau style, reminiscent of artists like Alphonse Mucha. The three panels each feature elegantly posed women surrounded by ornate decorative elements and abundant sunflowers.

​

**Left Panel:** Shows a woman with flowing brown hair wearing a dark teal halter top and flowing skirt. She's positioned within an ornate arched frame decorated with sunflowers and intricate patterns. A black cat sits at her feet, and the overall composition has warm golden tones mixed with deep teals and browns.

​

**Middle Panel:** Features a woman with black wavy hair wearing a striking yellow dress or vest over a white blouse. She's surrounded by a circular frame filled with large sunflowers, and she holds or pets a black cat. The background continues the sunflower motif with decorative medallions and patterns.

​

**Right Panel:** Depicts a woman with black hair wearing what appears to be a crown or headpiece made of sunflowers. She's dressed in yellow and black garments and poses with another black cat. Like the other panels, she's surrounded by ornate sunflower decorations and geometric patterns.

​

The entire piece uses a rich color palette of golden yellows, deep blacks, warm browns, and muted greens. Each woman wears ornate jewelry and has a contemplative, serene expression. The consistent presence of black cats and sunflowers throughout all three panels creates visual unity, while the Art Nouveau-style decorative borders and patterns give the work an elegant, vintage aesthetic. The style celebrates both feminine beauty and nature's abundance through its intricate, stylized approach.This is a stylized illustration of a programmer or data analyst at work. The image shows a bearded man with his hair in a bun, wearing a comfortable tan sweater, sitting at a wooden desk with a dual monitor setup.

​

The left monitor displays what appears to be a successful data import notification, while the right monitor shows Python code for CSV data processing, specifically:

​

```

import csv

with open('data.csv') as file:

reader = csv.reader(file)

data = list(reader)

```

​

The most striking element is the man's dramatically elongated orange arm reaching toward a spreadsheet icon on the left screen, creating a surreal, cartoon-like effect that emphasizes the interaction between the user and their data visualization tools.

​

The workspace includes typical programmer essentials: a black keyboard, a smartphone, and a coffee mug for fuel during long coding sessions. The warm orange background and wooden desk create a cozy, comfortable working environment.

​

The illustration effectively captures the modern data science workflow - importing CSV files, processing data with Python, and visualizing results. The exaggerated arm gesture humorously represents the hands-on nature of data manipulation and the satisfaction of successfully importing and working with data.

​

This type of illustration is commonly used in tech blogs, programming tutorials, or data science educational materials to make technical concepts more approachable and visually engaging.

← λΈ”λ‘œκ·Έ ν™ˆ