Python自动化办公实战案例:文件整理与邮件发送

简介: Python自动化办公实战案例:文件整理与邮件发送

一、引言

随着办公自动化的兴起,Python作为一门强大的编程语言,逐渐被应用于日常办公中。从文件整理到邮件发送,Python都能提供高效的解决方案。本文将通过一个实战案例,详细介绍如何使用Python实现文件自动整理与邮件自动发送,帮助新手朋友更好地理解和应用Python自动化办公。

二、案例背景

假设我们每天都需要处理大量的文件,这些文件包括各种格式(如Word、Excel、PDF等),并且需要按照不同的类别进行整理。同时,我们还需要定期向指定的客户发送这些文件。传统的做法需要手动进行文件分类、整理以及邮件发送,工作量大且容易出错。因此,我们可以使用Python编写自动化脚本,实现文件的自动整理与邮件的自动发送。

三、实战案例

(一)文件自动整理

需求分析

首先,我们需要明确文件整理的需求。假设我们的文件存放在一个名为input_folder的文件夹中,我们需要将这些文件按照不同的类别(如Word、Excel、PDF等)整理到不同的文件夹中。

解决方案

我们可以使用Python的os和shutil模块来实现文件的自动整理。具体步骤如下:

(1)遍历input_folder文件夹中的所有文件;

(2)根据文件扩展名判断文件类型,并将文件移动到对应的文件夹中;

(3)如果对应的文件夹不存在,则创建该文件夹。

代码实现

import os  
import shutil  
  
def sort_files(input_folder, output_base_folder):  
    # 遍历input_folder文件夹中的所有文件  
    for filename in os.listdir(input_folder):  
        file_path = os.path.join(input_folder, filename)  
          
        # 判断文件是否为普通文件  
        if os.path.isfile(file_path):  
            # 获取文件扩展名  
            extension = os.path.splitext(filename)[1][1:].lower()  
              
            # 定义文件目标文件夹  
            output_folder = os.path.join(output_base_folder, extension)  
              
            # 如果目标文件夹不存在,则创建  
            if not os.path.exists(output_folder):  
                os.makedirs(output_folder)  
              
            # 将文件移动到目标文件夹  
            shutil.move(file_path, os.path.join(output_folder, filename))  
  
# 使用示例  
input_folder = 'path/to/input_folder'  # 替换为实际的输入文件夹路径  
output_base_folder = 'path/to/output_base_folder'  # 替换为实际的输出文件夹路径  
sort_files(input_folder, output_base_folder)

(二)邮件自动发送

需求分析

在文件整理完成后,我们需要向指定的客户发送这些文件。假设我们已经有了一个包含客户邮箱和文件路径的CSV文件,我们需要编写一个Python脚本,自动读取CSV文件,并向对应的邮箱发送邮件,附带上对应的文件。

解决方案

我们可以使用Python的smtplib和email模块来实现邮件的自动发送。具体步骤如下:

(1)读取CSV文件,获取客户邮箱和文件路径;

(2)使用smtplib模块连接到邮件服务器;

(3)使用email模块构建邮件内容,并添加附件;

(4)发送邮件。代码实现

 

import csv  
import smtplib  
from email.mime.multipart import MIMEMultipart  
from email.mime.text import MIMEText  
from email.mime.base import MIMEBase  
from email import encoders  
  
def send_email(sender, password, recipients, subject, body, attachment_path):  
    # 创建邮件对象  
    msg = MIMEMultipart()  
      
    # 设置邮件信息  
    msg['From'] = sender  
    msg['To'] = ', '.join(recipients)  
    msg['Subject'] = subject  
      
    # 设置邮件正文  
    msg.attach(MIMEText(body, 'plain'))  
      
    # 添加附件  
    with open(attachment_path, 'rb') as attachment:  
        part = MIMEBase('application', 'octet-stream')  
        part.set_payload(attachment.read())  
        encoders.encode_base64(part)  
        part.add_header('Content-Disposition', "attachment; filename= " + os.path.basename(attachment_path))  
        msg.attach(part)  
      
    # 连接邮件服务器并发送邮件  
    with smtplib.SMTP('smtp.example.com', 5587) as server:
          server.starttls()
          server.login(sender, password)
          server.sendmail(sender, recipients, msg.as_string())
def send_emails_from_csv(csv_file_path, sender, password):
       with open(csv_file_path, 'r', encoding='utf-8') as csvfile:
            reader = csv.DictReader(csvfile)
       for row in reader:
            recipient = row['Email']
            attachment_path = row['FilePath']
            subject = "File Attachment"
            body = "Please find the attached file."
            send_email(sender, password, [recipient], subject, body, attachment_path)
 
#使用示例
csv_file_path = 'path/to/emails.csv' # 替换为实际的CSV文件路径
sender = 'your-email@example.com' # 替换为发件人邮箱
password = 'your-email-password' # 替换为发件人邮箱密码
send_emails_from_csv(csv_file_path, sender, password)

四、结语  

Python自动化办公为我们带来了很多便利,通过编写自动化脚本,我们可以轻松实现文件的自动整理、邮件的自动发送等任务。希望本文的实战案例能对新手朋友有所帮助,激发大家对Python自动化办公的兴趣和热情。

 


目录
相关文章
|
8月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
1981 2
|
7月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1355 68
|
9月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
307 0
|
10月前
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
2650 0
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
本文介绍了Python中的循环语句,包括while和for循环的使用,range()函数的运用,以及continue、break和pass关键字的说明,同时提出了关于while循环是否能与成员运算符结合使用的思考。
288 1
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
357 1
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
1322 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
222 1
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 函数与内置函数
本文详细介绍了Python中的函数概念,包括自定义函数、参数传递、局部与全局变量,以及内置函数的使用,还扩展了匿名函数、return和yield、exec()、vars()、iter()、map()、zip()、reversed()和sorted()等高级函数和概念。
352 1
Python接口自动化测试框架(基础篇)-- 函数与内置函数

推荐镜像

更多