当前位置: 首页 > news >正文

使用 Python 实现自动化办公(邮件、Excel)

目录

一、Python 自动化办公的准备工作

1.1 安装必要的库

1.2 设置邮件服务

二、邮件自动化处理

2.1 发送邮件

示例代码

注意事项

2.2 接收和读取邮件

示例代码

三、Excel 自动化处理

3.1 读取和写入 Excel 文件

示例代码

3.2 数据处理和分析

示例代码

四、综合实例:从邮件中读取 Excel 附件并分析

示例代码


随着技术的进步,Python 的高效性和易用性使其成为办公自动化的强大工具。通过 Python,我们可以自动处理日常工作中的邮件、Excel 表格等任务,从而大幅提升效率。本文将详细介绍如何使用 Python 实现这些自动化功能,并附上关键代码示例。


一、Python 自动化办公的准备工作

1.1 安装必要的库

在实现自动化办公之前,需要安装相关库。以下是常用的 Python 库:

  • 邮件自动化smtplib(发送邮件),imaplib(接收邮件),email(处理邮件内容)。
  • Excel 操作openpyxl(操作 Excel 文件),pandas(数据处理)。
  • 环境配置dotenv(管理环境变量)。

安装方式如下:

pip install openpyxl pandas python-dotenv

1.2 设置邮件服务

为了能够发送和接收邮件,需要:

  • 确保邮箱已开启 SMTP(发送)和 IMAP(接收)服务。
  • 使用支持授权的 App 密钥(如 Gmail 的“应用专用密码”)。

二、邮件自动化处理

2.1 发送邮件

示例代码

以下代码实现了通过 SMTP 发送邮件:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartdef send_email(sender_email, sender_password, recipient_email, subject, body):# 创建邮件对象msg = MIMEMultipart()msg['From'] = sender_emailmsg['To'] = recipient_emailmsg['Subject'] = subjectmsg.attach(MIMEText(body, 'plain'))# 连接到 SMTP 服务器并发送邮件try:with smtplib.SMTP('smtp.gmail.com', 587) as server:server.starttls()server.login(sender_email, sender_password)server.send_message(msg)print("邮件发送成功!")except Exception as e:print(f"邮件发送失败:{e}")# 调用示例
send_email(sender_email='your_email@gmail.com',sender_password='your_app_password',recipient_email='recipient@example.com',subject='测试邮件',body='这是一封通过 Python 发送的测试邮件。'
)
注意事项
  1. Gmail 用户需开启 “允许不安全应用访问” 或生成 App 密码。
  2. 替换 SMTP 服务地址时,其他邮箱服务商可能需要不同配置:
    • QQ 邮箱:smtp.qq.com
    • Outlook:smtp.office365.com

2.2 接收和读取邮件

示例代码

以下代码展示如何通过 IMAP 读取未读邮件:

import imaplib
import emaildef fetch_emails(email_address, password):try:# 连接 IMAP 服务器with imaplib.IMAP4_SSL('imap.gmail.com') as mail:mail.login(email_address, password)mail.select('inbox')  # 选择收件箱# 搜索未读邮件status, messages = mail.search(None, 'UNSEEN')for num in messages[0].split():status, msg_data = mail.fetch(num, '(RFC822)')for response_part in msg_data:if isinstance(response_part, tuple):msg = email.message_from_bytes(response_part[1])print(f"发件人: {msg['from']}")print(f"主题: {msg['subject']}")if msg.is_multipart():for part in msg.walk():if part.get_content_type() == 'text/plain':print(f"内容: {part.get_payload(decode=True).decode()}")else:print(f"内容: {msg.get_payload(decode=True).decode()}")except Exception as e:print(f"邮件读取失败:{e}")# 调用示例
fetch_emails('your_email@gmail.com', 'your_app_password')


三、Excel 自动化处理

3.1 读取和写入 Excel 文件

示例代码

使用 openpyxl 读取和写入 Excel:

import openpyxl# 打开 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active# 读取数据
for row in sheet.iter_rows(min_row=1, max_row=5, min_col=1, max_col=3):print([cell.value for cell in row])# 写入数据
sheet['A6'] = '新数据'
workbook.save('example_updated.xlsx')
print("Excel 文件已更新!")

3.2 数据处理和分析

示例代码

使用 pandas 对 Excel 数据进行分析:

import pandas as pd# 读取 Excel 文件
data = pd.read_excel('example.xlsx')# 打印前五行数据
print(data.head())# 数据处理
data['总分'] = data['数学'] + data['英语'] + data['科学']
print(data)# 保存结果
data.to_excel('processed.xlsx', index=False)
print("数据处理完成并已保存!")

四、综合实例:从邮件中读取 Excel 附件并分析

以下代码展示了一个完整的自动化工作流:

  1. 接收邮件并提取附件。
  2. 读取 Excel 数据,进行分析。
  3. 将结果发送回发件人。
示例代码
import os
import imaplib
import email
import pandas as pd
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplibdef fetch_and_process_email(email_address, password):# 连接 IMAPwith imaplib.IMAP4_SSL('imap.gmail.com') as mail:mail.login(email_address, password)mail.select('inbox')# 搜索含附件邮件status, messages = mail.search(None, 'ALL')for num in messages[0].split():status, msg_data = mail.fetch(num, '(RFC822)')for response_part in msg_data:if isinstance(response_part, tuple):msg = email.message_from_bytes(response_part[1])if msg.is_multipart():for part in msg.walk():if part.get_filename():  # 找到附件file_path = os.path.join(os.getcwd(), part.get_filename())with open(file_path, 'wb') as f:f.write(part.get_payload(decode=True))print(f"附件已保存: {file_path}")# 处理附件数据data = pd.read_excel(file_path)data['总分'] = data.sum(axis=1)processed_path = 'processed.xlsx'data.to_excel(processed_path, index=False)print("数据处理完成")# 返回处理结果send_email(sender_email=email_address,sender_password=password,recipient_email=msg['from'],subject='数据处理结果',body='附件已处理,请查看。',attachment_path=processed_path)def send_email(sender_email, sender_password, recipient_email, subject, body, attachment_path):msg = MIMEMultipart()msg['From'] = sender_emailmsg['To'] = recipient_emailmsg['Subject'] = subjectmsg.attach(MIMEText(body, 'plain'))# 添加附件with open(attachment_path, 'rb') as f:attachment = email.mime.base.MIMEBase('application', 'octet-stream')attachment.set_payload(f.read())email.encoders.encode_base64(attachment)attachment.add_header('Content-Disposition', f'attachment; filename={os.path.basename(attachment_path)}')msg.attach(attachment)# 发送邮件with smtplib.SMTP('smtp.gmail.com', 587) as server:server.starttls()server.login(sender_email, sender_password)server.send_message(msg)print("邮件已发送!")# 调用示例
fetch_and_process_email('your_email@gmail.com', 'your_app_password')

相关文章:

使用 Python 实现自动化办公(邮件、Excel)

目录 一、Python 自动化办公的准备工作 1.1 安装必要的库 1.2 设置邮件服务 二、邮件自动化处理 2.1 发送邮件 示例代码 注意事项 2.2 接收和读取邮件 示例代码 三、Excel 自动化处理 3.1 读取和写入 Excel 文件 示例代码 3.2 数据处理和分析 示例代码 四、综合…...

贪心算法笔记

贪心算法笔记 大概内容 贪心就是对于一个问题有很多个步骤,我们在每一个步骤中都选取最优的那一个,最后得出答案。就是在一些函数中可行,但是有些比如二次函数,因为它的转折点不一定最优,就是不可行的。那么如何判断贪心呢?有这么几种 看时间复杂度,一般的就是 O ( n…...

Formality:两种等价状态consistency和equality

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 背景 逻辑锥的等价性检查时,存在两种验证模式:一致(consistency)和等同(equality),要理解这两点,首先得明白综合工具…...

Java Web开发基础:HTML的深度解析与应用

文章目录 前言🌍一.B/S 软件开发架构简述🌍二.HTML 介绍❄️2.1 官方文档❄️2.2 网页的组成❄️2.3 HTML 是什么❄️2.4html基本结构 🌍三.HTML标签1.html 的标签/元素-说明2. html 标签注意事项和细节3.font 字体标签4.标题标签5.超链接标签…...

第30章 汇编语言--- 性能优化技巧

汇编语言是用于直接编程计算机硬件的低级语言,它几乎是一对一地映射到机器指令。因为汇编代码与特定处理器架构紧密相关,所以在讨论性能优化技巧时,通常需要考虑具体的CPU架构和指令集。 以下是一些通用的汇编语言性能优化技巧,并…...

HTB:Paper[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 对靶机进行子域…...

数据库中的 DDL、DML 和 DCL

数据库中的 DDL、DML 和 DCL 在数据库的定义与操作中,DDL、DML 和 DCL 是三个核心概念,分别用于不同层面的数据库管理与操作。 1. DDL(Data Definition Language) - 数据定义语言 定义 DDL 用于定义和管理数据库的结构或模式。…...

OKR 极简史及理解

大家读完觉得有帮助记得点赞和关注!!! 目录 MBO SMART 和 KPI OKR 1. 什么是 OKR? 1.1 Objectives(目标) 1.2 Key Results(关键成果) KR 应当是困难的,但并非不可…...

电商项目-基于ElasticSearch实现商品搜索功能(四)

一、 高亮显示 1.1 高亮分析 高亮显示是指根据商品关键字搜索商品的时候,显示的页面对关键字给定了特殊样式,让它显示更加突出,如商品搜索中,关键字变成了红色,其实就是给定了红色样式。 1.2 高亮搜索实现步骤解析 …...

TCP封装数据帧

void *send_data(void *arg) //这是一个发送数据的线程 {int sockfd init_tcp_cli("192.168.0.148",50000) //传ip和port&#xff0c;port 50000是因为大概前五万都被其它服务所占用&#xff0c;50000后是私人ipif(sockfd < 0){return NULL;}unsigned char …...

数据结构与算法之二叉树: LeetCode 515. 在每个树行中找最大值 (Ts版)

在每个树行中找最大值 https://leetcode.cn/problems/find-largest-value-in-each-tree-row/description/ 描述 给定一棵二叉树的根节点 root &#xff0c;请找出该二叉树中每一层的最大值 示例1 输入: root [1,3,2,5,3,null,9] 输出: [1,3,9]示例2 输入: root [1,2,3]…...

百度视频搜索架构演进

导读 随着信息技术的迅猛发展&#xff0c;搜索引擎作为人们获取信息的主要途径&#xff0c;其背后的技术架构也在不断演进。本文详细阐述了近年来视频搜索排序框架的重大变革&#xff0c;特别是在大模型技术需求驱动下&#xff0c;如何从传统的多阶段级联框架逐步演变为更加高…...

构造函数的原型原型链

代码示例 // 定义一个构造函数 Test function Test() {this.name 张三 }; //向构造函数的原型添加一个属性 age18 Test.prototype.age 18;//使用构造函数 Test 来实例化一个新对象 const test new Test();//向 Object.prototype 添加了一个名为 sex 的属性&#xff0c;其值…...

nginx反向代理及负载均衡

华子目录 nginx反向代理功能http反向代理反向代理配置参数proxy_pass的注意事项案例&#xff1a;反向代理单台后端服务器案例&#xff1a;反向代理实现动静分离案例&#xff1a;反向代理的缓存功能非缓存场景下测压准备缓存缓存场景下测压验证缓存文件 反向代理负载均衡&#x…...

单片机实物成品-011 火灾监测

火灾监测&#xff08;20个版本&#xff09; 版本20&#xff1a; oled显示温湿度烟雾浓度火焰传感器天然气浓度窗户风扇水泵排气系统声光报警语音播报按键WIFI模块 ----------------------------------------------------------------------------- https://www.bilibili.com…...

使用 Docker 在 Alpine Linux 下部署 Caddy 服务器

简介 在现代 web 开发中&#xff0c;选择合适的 web 服务器至关重要。Caddy 是一个功能强大的现代化 HTTP/2 服务器&#xff0c;支持自动 HTTPS&#xff0c;配置简单&#xff0c;适合开发和生产环境。Docker 则为我们提供了一种轻量级的容器化技术&#xff0c;使得应用程序的部…...

每日十题八股-2025年1月12日

1.为什么四次挥手之后要等2MSL? 2.服务端出现大量的timewait有哪些原因? 3.TCP和UDP区别是什么&#xff1f; 4.TCP为什么可靠传输 5.怎么用udp实现http&#xff1f; 6.tcp粘包怎么解决&#xff1f; 7.TCP的拥塞控制介绍一下&#xff1f; 8.描述一下打开百度首页后发生的网络过…...

Python中定位包含特定文本信息的元素

目录 一、为什么需要定位包含文本信息的元素 二、使用Selenium定位包含文本的元素 1. 使用find_element_by_link_text 2. 使用find_element_by_partial_link_text 3. 使用XPath定位包含文本的元素 4. 使用CSS选择器定位包含文本的元素 三、使用BeautifulSoup定位包含文本…...

uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验

在 UniApp 中&#xff0c;由于需要兼容多端应用&#xff0c;我们通常使用 rpx 作为尺寸单位。然而&#xff0c;在某些情况下&#xff0c;如需要实现内容居中且两边留白时&#xff0c;直接使用 rpx 可能会带来一些限制。这时&#xff0c;我们可以考虑使用 px 或 rem 等单位&…...

极品飞车6里的赛道简介

极品飞车里有很多赛道,赛道分为前向赛道Forward、后向赛道Backward。前向赛道Forward是从A点到B点;后向赛道Backward是前向赛道的逆过程,即从B点到A点。这里介绍极品飞车6的赛道长度、中英文名称翻译、难度等级。 序号赛道英文名赛道中文名总长(km)急弯难度等级1Alpine Trai…...

Mermaid在线编辑器终极指南:免费实时图表创作工具完全解析

Mermaid在线编辑器终极指南&#xff1a;免费实时图表创作工具完全解析 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-ed…...

终极指南:如何将Python PEG语法轻松迁移到Ohm解析器

终极指南&#xff1a;如何将Python PEG语法轻松迁移到Ohm解析器 【免费下载链接】ohm A library and language for building parsers, interpreters, compilers, etc. 项目地址: https://gitcode.com/gh_mirrors/oh/ohm 想要将Python的PEG语法迁移到Ohm解析器框架吗&…...

cv_resnet18_ocr-detection保姆级教程:从安装到批量处理图片文字

cv_resnet18_ocr-detection保姆级教程&#xff1a;从安装到批量处理图片文字 1. 快速上手&#xff1a;5分钟搞定OCR文字检测 你是不是经常需要从图片里提取文字&#xff1f;比如整理扫描的文档、识别截图里的信息&#xff0c;或者处理一堆商品图片上的标签。手动打字太慢&…...

Air8101:低功耗-WiFi-UI_SoC模组介绍

一、模组概述 Air8101 是高性能 WiFi SoC 模组&#xff0c;支持2.4G WiFi6与BLE 5.4双模通信&#xff0c;兼容DVP/UVC摄像头接口&#xff0c;可实现200W像素拍照、100W像素录像&#xff08;支持H.264编码及RTMP推流&#xff09;&#xff0c;搭载LuatOS&#xff0c;降低二次开发…...

Qwen3.5-9B企业应用:法务合同关键条款提取+风险点标注案例

Qwen3.5-9B企业应用&#xff1a;法务合同关键条款提取风险点标注案例 1. 项目背景与价值 在法务工作中&#xff0c;合同审查是一项耗时且容易出错的任务。传统的人工审查方式需要律师逐条阅读合同文本&#xff0c;识别关键条款并标注潜在风险点&#xff0c;这个过程通常需要数…...

百考通:AI精准赋能实践报告,让实习总结高效又专业

对于每一位在校学生和职场新人而言&#xff0c;实践报告都是记录成长、沉淀经验的关键载体&#xff0c;却也常常成为令人头疼的难题&#xff1a;要么不知如何梳理工作脉络&#xff0c;要么难以精准提炼收获与反思&#xff0c;要么在格式规范和字数要求上反复纠结。百考通&#…...

镜像视界|AI空间计算重塑公安实战:从“找人”到“锁人”的智能体革命——基于Pixel-to-Space、MatrixFusion与三维轨迹建模的空间级无感定位系统

&#x1f4d8; 镜像视界&#xff5c;AI空间计算重塑公安实战&#xff1a;从“找人”到“锁人”的智能体革命 ——基于Pixel-to-Space、MatrixFusion与三维轨迹建模的空间级无感定位系统 一、实战痛点&#xff1a;为什么公安仍停留在“找人阶段” 在当前公安实战中&#xff0c…...

OpenClaw社交媒体管理:Gemma-3-12b-it自动回复评论与生成周报

OpenClaw社交媒体管理&#xff1a;Gemma-3-12b-it自动回复评论与生成周报 1. 为什么选择OpenClaw管理社交媒体 去年运营个人技术账号时&#xff0c;我每天要花1小时手动回复评论和整理周报。直到发现OpenClaw这个开源自动化框架&#xff0c;配合Gemma-3-12b-it模型&#xff0…...

04_RAGFlow之知识图谱与Text2SQL

RAGFlow之知识图谱与Text2SQL&#xff1a;构建智能检索的双引擎 知识体系结构 RAGFlow技术栈 │ ├── 知识图谱层 │ ├── 实体识别与关系提取&#xff08;NER Relation Extraction&#xff09; │ ├── 图谱查询与推理&#xff08;Graph Query & Reasoning&a…...

STM32温室智能监控系统开发实战

1. 项目概述这个温室培育系统项目是我去年为一个农业科技公司开发的实战案例。整套系统基于STM32F103RCT6主控&#xff0c;整合了12种硬件模块&#xff0c;实现了温室环境的全自动化监控与调控。最让我自豪的是&#xff0c;系统上线后客户反馈作物产量提升了23%&#xff0c;水电…...