[파이썬] 자동화된 레포트 배포

배포 작업은 소프트웨어 개발 과정에서 중요한 부분입니다. 특히, 레포트 작성 및 배포는 프로젝트의 진행 상황과 결과를 공유하고 효과적으로 관리하기 위해 필수적입니다. 그러나 이러한 작업은 반복적이고 시간 소모적일 수 있으며, 실수를 유발할 가능성이 있습니다. 이를 해결하기 위해 Python의 자동화 기능을 사용하여 레포트 배포 작업을 자동화하는 방법에 대해 알아보겠습니다.

필요한 도구 설치

먼저 자동화된 레포트 배포를 위해 필요한 도구들을 설치해야 합니다. Python 패키지 관리자인 pip를 사용하여 필요한 패키지를 설치할 수 있습니다.

pip install pandas reportlab smtplib

위의 명령을 실행하여 pandas, reportlab, smtplib 패키지를 설치합니다.

레포트 생성

자동화된 레포트 배포를 위해서는 먼저 레포트를 생성해야 합니다. 이 예시에서는 pandas 패키지를 사용하여 데이터를 로드하고, reportlab 패키지를 사용하여 PDF 형식의 레포트를 생성합니다.

import pandas as pd
from reportlab.pdfgen import canvas

# 데이터 로드
data = pd.read_csv('data.csv')

# PDF 파일 생성
pdf = canvas.Canvas('report.pdf')
pdf.setFont('Helvetica-Bold', 20)
pdf.drawString(100, 700, "레포트 제목")

# 데이터를 표로 추가
data_table = pd.DataFrame(data)
pdf.drawString(100, 600, str(data_table))

pdf.save()

위의 예시 코드에서는 data.csv 파일에서 데이터를 읽어와서 표 형태로 레포트에 추가합니다. pandas를 사용하여 데이터를 가공하고, reportlab을 사용하여 PDF 파일을 생성합니다. 여기서는 단순히 텍스트를 추가하였지만, 필요한 경우 그래프나 이미지도 추가할 수 있습니다.

레포트 이메일로 전송

레포트를 생성한 뒤에는 이메일을 통해 해당 레포트를 수신자들에게 전송하는 것이 효과적입니다. 이를 위해 smtplib 패키지를 사용하여 SMTP 서버를 통해 이메일을 전송합니다.

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

def send_email():
    email_user = "your_email@gmail.com"
    email_password = "your_password"
    email_send = "recipient_email@gmail.com"

    subject = "레포트 배포"

    msg = MIMEMultipart()
    msg['From'] = email_user
    msg['To'] = email_send
    msg['Subject'] = subject

    body = "레포트를 첨부합니다."
    msg.attach(MIMEText(body, 'plain'))

    filename = "report.pdf"
    attachment = open(filename, "rb")

    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

    msg.attach(part)

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(email_user, email_password)
    server.send_message(msg)

    server.quit()

send_email()

위의 코드에서는 smtplib 패키지를 사용하여 Gmail SMTP 서버를 통해 이메일을 전송합니다. send_email 함수를 호출하여 SMTP 서버에 로그인한 뒤, 이메일을 생성하고 첨부 파일로 레포트를 추가합니다. 이메일의 내용과 주소 정보를 설정한 뒤, server.send_message(msg)를 통해 이메일을 전송합니다.

자동화된 배포

위에서 작성한 코드들을 통합하여 자동화된 레포트 배포 스크립트를 작성할 수 있습니다.

import pandas as pd
from reportlab.pdfgen import canvas
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

def create_report():
    data = pd.read_csv('data.csv')

    pdf = canvas.Canvas('report.pdf')
    pdf.setFont('Helvetica-Bold', 20)
    pdf.drawString(100, 700, "레포트 제목")

    data_table = pd.DataFrame(data)
    pdf.drawString(100, 600, str(data_table))

    pdf.save()

def send_email():
    email_user = "your_email@gmail.com"
    email_password = "your_password"
    email_send = "recipient_email@gmail.com"

    subject = "레포트 배포"

    msg = MIMEMultipart()
    msg['From'] = email_user
    msg['To'] = email_send
    msg['Subject'] = subject

    body = "레포트를 첨부합니다."
    msg.attach(MIMEText(body, 'plain'))

    filename = "report.pdf"
    attachment = open(filename, "rb")

    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

    msg.attach(part)

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(email_user, email_password)
    server.send_message(msg)

    server.quit()

if __name__ == "__main__":
    create_report()
    send_email()

위의 예시 코드에서는 create_report 함수를 호출하여 레포트를 생성하고, send_email 함수를 호출하여 생성한 레포트를 이메일로 전송합니다. 따라서 이 스크립트를 실행하면 자동으로 레포트가 생성되고, 해당 레포트가 수신자에게 이메일로 전송됩니다.

이제 Python을 사용하여 자동화된 레포트 배포를 구현하는 방법에 대해 알아보았습니다. 이를 통해 반복적이고 시간 소모적인 작업을 자동화하여 효율성을 높일 수 있습니다.