Python增强办公效率的11个实用代码段

如果你正在学习Python,那么你需要的话可以,点击这里👉Python重磅福利:入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享!

 

引言 

在日常工作中,许多任务可以通过编程自动化来提高效率。本文将介绍一些实用的 Python 脚本,用于批量创建文件夹、重命名文件、处理 Excel 数据、合并 PDF 文件等。这些工具能显著减少重复性工作,提升工作效率。

1. 快速生成批量文件夹

工作中经常需要创建多个文件夹来分类存储不同类型的文件。手动创建不仅耗时还容易出错。利用 Python 可以快速生成批量文件夹。

import osdef create_folders(base_path, folder_names):"""在指定路径下创建多个文件夹。:param base_path: 文件夹创建的基础路径:param folder_names: 要创建的文件夹名称列表"""for name in folder_names:path = os.path.join(base_path, name)if not os.path.exists(path):os.makedirs(path)print(f"创建文件夹 {path}")# 示例使用
folder_names = ['2023年报表', '2023年会议记录', '2023年项目文档']
create_folders('C:\\Users\\YourName\\Documents', folder_names)

输出结果:

创建文件夹 C:\Users\YourName\Documents\2023年报表
创建文件夹 C:\Users\YourName\Documents\2023年会议记录
创建文件夹 C:\Users\YourName\Documents\2023年项目文档

2. 批量重命名文件

当有大量文件需要重命名时,手动操作显然不现实。Python 的 os 模块可以轻松完成这一任务。

import osdef rename_files(directory, prefix):"""批量重命名目录下的所有文件,添加前缀。:param directory: 需要重命名文件所在的目录:param prefix: 添加到文件名前面的前缀"""for filename in os.listdir(directory):old_name = os.path.join(directory, filename)new_name = os.path.join(directory, f"{prefix}_{filename}")os.rename(old_name, new_name)print(f"重命名 {old_name} 为 {new_name}")# 示例使用
rename_files('C:\\Users\\YourName\\Documents\\2023年报表', '报表')

输出结果:

重命名 C:\Users\YourName\Documents\2023年报表\file1.xlsx 为 C:\Users\YourName\Documents\2023年报表\报表_file1.xlsx
重命名 C:\Users\YourName\Documents\2023年报表\file2.xlsx 为 C:\Users\YourName\Documents\2023年报表\报表_file2.xlsx

3. Excel 数据处理

日常工作中经常需要处理 Excel 表格数据。使用 pandas 库可以高效地读取、处理 Excel 文件。

import pandas as pddef process_excel(file_path):"""读取并处理 Excel 文件。:param file_path: Excel 文件路径"""# 读取 Excel 文件df = pd.read_excel(file_path)# 处理数据df['Total'] = df['Quantity'] * df['Price']df.dropna(inplace=True)  # 删除缺失值# 保存处理后的数据df.to_excel('processed_data.xlsx', index=False)# 示例使用
process_excel('C:\\Users\\YourName\\Documents\\sales_data.xlsx')

输出结果:

  • 原始 Excel 文件中的数据被读入 DataFrame。

  • 新增一列 Total 计算销售额。

  • 删除包含 NaN 的行。

  • 将处理后的数据保存到新文件 processed_data.xlsx 中。

4. PDF 文档合并

经常需要将多个 PDF 文件合并成一个文档。借助于 PyPDF2 库可以轻松实现该功能。

from PyPDF2 import PdfFileMergerdef merge_pdfs(paths, output):"""合并多个 PDF 文件。:param paths: PDF 文件路径列表:param output: 输出文件路径"""merger = PdfFileMerger()for pdf in paths:merger.append(pdf)merger.write(output)merger.close()# 示例使用
pdf_paths = ['report_part1.pdf', 'report_part2.pdf', 'report_part3.pdf']
merge_pdfs(pdf_paths, 'complete_report.pdf')

输出结果:

  • complete_report.pdf 文件中包含了三个部分的内容。

5. 文本内容替换

在处理大量文本文件时,经常需要批量替换某些内容。Python 的 re 模块提供了强大的正则表达式支持,可以轻松完成这一任务。

import re
import osdef replace_text_in_files(directory, pattern, replacement):"""在指定目录下的所有文本文件中替换特定内容。:param directory: 目录路径:param pattern: 要替换的模式(正则表达式):param replacement: 替换的内容"""for filename in os.listdir(directory):if filename.endswith('.txt'):filepath = os.path.join(directory, filename)with open(filepath, 'r') as file:content = file.read()updated_content = re.sub(pattern, replacement, content)with open(filepath, 'w') as file:file.write(updated_content)print(f"更新文件 {filepath}")# 示例使用
directory = 'C:\\Users\\YourName\\Documents\\text_files'
pattern = r'old_text'
replacement = 'new_text'
replace_text_in_files(directory, pattern, replacement)

输出结果:

更新文件 C:\Users\YourName\Documents\text_files\file1.txt
更新文件 C:\Users\YourName\Documents\text_files\file2.txt

6. 发送邮件自动化

发送邮件是日常工作的一部分。使用 smtplibemail 库可以自动发送邮件,节省时间和精力。

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartdef send_email(subject, body, to_emails):"""发送邮件。:param subject: 邮件主题:param body: 邮件正文:param to_emails: 收件人邮箱列表"""sender_email = 'your_email@example.com'sender_password = 'your_password'message = MIMEMultipart()message['From'] = sender_emailmessage['To'] = ', '.join(to_emails)message['Subject'] = subjectmessage.attach(MIMEText(body, 'plain'))try:server = smtplib.SMTP('smtp.example.com', 587)server.starttls()server.login(sender_email, sender_password)text = message.as_string()server.sendmail(sender_email, to_emails, text)server.quit()print("邮件发送成功")except Exception as e:print(f"邮件发送失败:{e}")# 示例使用
subject = "本周工作报告"
body = "这是本周的工作报告,请查收。"
to_emails = ['alice@example.com', 'bob@example.com']
send_email(subject, body, to_emails)

输出结果:

邮件发送成功

7. 数据可视化

数据分析过程中,图表能够帮助更好地理解数据。使用 matplotlib 库可以轻松绘制各种图表。

import matplotlib.pyplot as plt
import pandas as pddef plot_data(data, title, x_label, y_label):"""绘制数据图表。:param data: 数据 DataFrame:param title: 图表标题:param x_label: X 轴标签:param y_label: Y 轴标签"""plt.figure(figsize=(10, 6))plt.plot(data[x_label], data[y_label])plt.title(title)plt.xlabel(x_label)plt.ylabel(y_label)plt.grid(True)plt.show()# 示例使用
data = pd.DataFrame({'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],'Sales': [200, 250, 300, 350, 400, 450]
})
plot_data(data, 'Monthly Sales', 'Month', 'Sales')

输出结果:

  • 绘制了一个简单的折线图,显示每月的销售数据。

8. Excel 数据批量处理

当需要对多个 Excel 文件进行相同的操作时,可以编写一个脚本来批量处理。

import pandas as pd
import osdef process_excel_files(directory):"""批量处理目录下的所有 Excel 文件。:param directory: 目录路径"""for filename in os.listdir(directory):if filename.endswith('.xlsx'):filepath = os.path.join(directory, filename)df = pd.read_excel(filepath)# 数据处理df['Total'] = df['Quantity'] * df['Price']df.dropna(inplace=True)# 保存处理后的数据output_path = os.path.join(directory, f"processed_{filename}")df.to_excel(output_path, index=False)print(f"处理并保存文件 {output_path}")# 示例使用
directory = 'C:\\Users\\YourName\\Documents\\sales_data'
process_excel_files(directory)

输出结果:

处理并保存文件 C:\Users\YourName\Documents\sales_data\processed_sales1.xlsx
处理并保存文件 C:\Users\YourName\Documents\sales_data\processed_sales2.xlsx

9. 自动化生成报告

在定期汇报工作中,自动生成报告可以节省大量时间。使用 pandasopenpyxl 库可以实现这一目标。

import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rowsdef generate_report(data, output_path):"""生成 Excel 报告。:param data: 数据 DataFrame:param output_path: 输出文件路径"""wb = Workbook()ws = wb.activews.title = 'Report'for r in dataframe_to_rows(data, index=False, header=True):ws.append(r)wb.save(output_path)print(f"报告已生成:{output_path}")# 示例使用
data = pd.DataFrame({'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],'Sales': [200, 250, 300, 350, 400, 450]
})
generate_report(data, 'monthly_report.xlsx')

输出结果:

报告已生成:monthly_report.xlsx

10. 文件压缩与解压

处理大量文件时,压缩与解压文件可以节省存储空间。使用 zipfile 模块可以轻松实现。

import zipfile
import osdef compress_files(directory, output_path):"""压缩指定目录下的所有文件。:param directory: 目录路径:param output_path: 输出文件路径"""with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:for root, dirs, files in os.walk(directory):for file in files:file_path = os.path.join(root, file)zipf.write(file_path, os.path.relpath(file_path, directory))print(f"压缩文件 {file_path}")# 示例使用
directory = 'C:\\Users\\YourName\\Documents\\project_files'
output_path = 'project_files.zip'
compress_files(directory, output_path)

输出结果:

压缩文件 C:\Users\YourName\Documents\project_files\file1.txt
压缩文件 C:\Users\YourName\Documents\project_files\file2.txt

11. 实战案例:自动化数据处理与报告生成

假设你是一名财务分析师,每天需要处理大量的销售数据,并生成一份报告。以下是一个完整的自动化脚本示例:

import pandas as pd
import matplotlib.pyplot as plt
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
import zipfile
import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartdef process_data(input_directory, output_directory):"""处理数据并生成报告。:param input_directory: 输入数据目录:param output_directory: 输出数据目录"""# 读取数据data = pd.DataFrame()for filename in os.listdir(input_directory):if filename.endswith('.xlsx'):filepath = os.path.join(input_directory, filename)df = pd.read_excel(filepath)data = pd.concat([data, df])# 数据处理data['Total'] = data['Quantity'] * data['Price']data.dropna(inplace=True)# 保存处理后的数据output_path = os.path.join(output_directory, 'processed_data.xlsx')data.to_excel(output_path, index=False)print(f"处理并保存数据:{output_path}")# 生成图表plt.figure(figsize=(10, 6))plt.plot(data['Date'], data['Total'])plt.title('Monthly Sales')plt.xlabel('Date')plt.ylabel('Total Sales')plt.grid(True)plt.savefig(os.path.join(output_directory, 'sales_chart.png'))print("图表已生成")# 生成报告wb = Workbook()ws = wb.activews.title = 'Report'for r in dataframe_to_rows(data, index=False, header=True):ws.append(r)wb.save(os.path.join(output_directory, 'monthly_report.xlsx'))print("报告已生成")# 压缩文件with zipfile.ZipFile(os.path.join(output_directory, 'monthly_data.zip'), 'w', zipfile.ZIP_DEFLATED) as zipf:for root, dirs, files in os.walk(output_directory):for file in files:file_path = os.path.join(root, file)zipf.write(file_path, os.path.relpath(file_path, output_directory))print(f"压缩文件 {file_path}")# 发送邮件sender_email = 'your_email@example.com'sender_password = 'your_password'to_emails = ['alice@example.com', 'bob@example.com']message = MIMEMultipart()message['From'] = sender_emailmessage['To'] = ', '.join(to_emails)message['Subject'] = 'Monthly Report'with open(os.path.join(output_directory, 'monthly_report.xlsx'), 'rb') as file:attachment = file.read()part = MIMEBase('application', 'octet-stream')part.set_payload(attachment)encoders.encode_base64(part)part.add_header('Content-Disposition', f'attachment; filename=monthly_report.xlsx')message.attach(part)with open(os.path.join(output_directory, 'sales_chart.png'), 'rb') as file:attachment = file.read()part = MIMEBase('application', 'octet-stream')part.set_payload(attachment)encoders.encode_base64(part)part.add_header('Content-Disposition', f'attachment; filename=sales_chart.png')message.attach(part)try:server = smtplib.SMTP('smtp.example.com', 587)server.starttls()server.login(sender_email, sender_password)text = message.as_string()server.sendmail(sender_email, to_emails, text)server.quit()print("邮件发送成功")except Exception as e:print(f"邮件发送失败:{e}")# 示例使用
input_directory = 'C:\\Users\\YourName\\Documents\\sales_data'
output_directory = 'C:\\Users\\YourName\\Documents\\reports'
process_data(input_directory, output_directory)

输出结果:

处理并保存数据:C:\Users\YourName\Documents\reports\processed_data.xlsx
图表已生成
报告已生成
压缩文件 monthly_report.xlsx
压缩文件 sales_chart.png
压缩文件 processed_data.xlsx
邮件发送成功

总结

本文介绍了多种 Python 脚本,用于提高日常工作的效率。通过自动化批量创建文件夹、重命名文件、处理 Excel 数据、合并 PDF 文件、批量替换文本内容、发送邮件、数据可视化、批量处理 Excel 文件、生成报告、压缩文件等功能,可以显著减少重复性工作。希望这些工具能帮助你更高效地完成工作任务。

如果你正在学习Python,那么你需要的话可以,点击这里👉Python重磅福利:入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享!或扫描下方CSDN官方微信二维码获娶Python入门&进阶全套学习资料、电子书、软件包、项目源码:


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/430140.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法入门-贪心2

第八部分:贪心 561.数组拆分(简单) 题目:给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。 返回该 最…

Three.js 3D人物漫游项目(下)

本文目录 前言最终效果1、效果回顾2、编写人物模型动画执行类并调用2.1 代码2.2 代码解读2.3 实例化动画类并调用2.4 效果2.4.1 休息动画2.4.2 跑步动画2.4.3 走路动画2.4.4 舞蹈1动画2.4.5 舞蹈2动画3、键盘控制动画3.1 站立休息、走、跑、舞蹈1、舞蹈2代码3.1.1 效果3.2 跳跃…

基于丹摩智算平台-手把手拿下经典目标检测模型 Faster-Rcnn

文章目录 1. 前言1. 1 丹摩智算平台1.2 经典目标检测模型 Faster-Rcnn 2. 前置准备2.1 WindTerm(远程连接服务器)2.2 项目源码 3. 服务器平台配置3.1 创建实例3.2 远程链接 4. Faster-rcnn 的环境配置4.1 上传文件,解压4.2 安装所需环境 5. 数…

华为HarmonyOS地图服务 1 -- 如何实现地图呈现?

如何使用地图组件MapComponent和MapComponentController呈现地图,效果如下图所示。 MapComponent是地图组件,用于在您的页面中放置地图。MapComponentController是地图组件的主要功能入口类,用来操作地图,与地图有关的所有方法从此…

基于PaddlePaddle复现的PeleeNet

转自AI Studio,原文链接:基于PaddlePaddle复现的PeleeNet - 飞桨AI Studio PeleeNet: An efficient DenseNet architecture for mobile devices 1. 简介 这是一个PaddlePaddle实现的PeleeNet。 PeleeNet是一个高效的卷积神经网络(CNN&…

数通。。。

通信:需要介质才能通信电话离信号塔(基站)越远,信号越弱。信号在基站之间传递。你离路由器越远,信号越差。一个意思 比如想传一张图片,这张图片就是数据载荷 网关,分割两个网络。路由器可以是网…

【贪心算法】贪心算法二

贪心算法二 1.最长递增子序列2.递增的三元子序列3.最长连续递增序列 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.最长递增子序列 题目链…

AI免费UI页面生成

https://v0.dev/chat v0 - UI设计 cursor - 编写代码 参考:https://www.youtube.com/watch?vIyIVvAu1KZ4 界面和claude类似,右侧展示效果和代码 https://pagen.so/

用uniapp 及socket.io做一个简单聊天 升级 9

比这之前优化了以下功能 上线通知 群聊里适时显示在线人数 约请好友 通过好友通过socket 相应端自动变化 PC端可以拉取摄象头拍照 PC端可以录音发送 拉起摄象头发送录象 <template><view class""><scroll-view scroll-y"true" class&…

【Linux篇】常用命令及操作技巧(基础篇)

&#x1f30f;个人博客主页&#xff1a;意疏-CSDN博客 希望文章能够给到初学的你一些启发&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏支持一下笔者吧&#xff5e; 阅读指南&#xff1a; 开篇说明帮助命令常见的七个linux操作终端实用的技巧跟文件目录…

【深入理解SpringCloud微服务】了解微服务的熔断、限流、降级,手写实现一个微服务熔断限流器

【深入理解SpringCloud微服务】了解微服务的熔断、限流、降级&#xff0c;手写实现一个微服务熔断限流器 服务雪崩熔断、限流、降级熔断降级限流 手写实现一个微服务熔断限流器架构设计代码实现整体逻辑ProtectorAspect#aroundMethod(ProceedingJoinPoint)具体实现1、获取接口对…

智慧农业——InsectMamba利用状态空间模型对害虫进行分类

介绍 论文地址&#xff1a;https://arxiv.org/abs/2404.03611 害虫分类是农业中的一个重要问题。准确识别有害害虫可减少对作物的损害&#xff0c;确保粮食安全和环境的可持续发展。然而&#xff0c;害虫及其自然环境的高度拟态性和物种多样性使得视觉特征的提取极具挑战性。…

Centos7.9 使用 Kubeadm 自动化部署 K8S 集群(一个脚本)

文章目录 一、环境准备1、硬件准备&#xff08;虚拟主机&#xff09;2、操作系统版本3、硬件配置4、网络 二、注意点1、主机命名格式2、网络插件 flannel 镜像拉取2.1、主机生成公私钥2.2、为啥有 Github 还用 Gitee2.3、将主机公钥添加到 Gitee2.3.1、复制主机上的公钥2.3.2、…

< 微积分Calculus >

微积分 微分是把整体分拆为小部分来求它怎样改变 积分是把小部分连接在一起来求整体有多大&#xff0c;可以用来求面积、体积、中点和很多其他有用的东西。 lim极限 函数f(x) -> Q(x) y&#xff1a;x变量&#xff0c;f函数&#xff0c;Q(x)函数体&#xff08;多项式&am…

【Paper Reading】结合 NanoFlow 研究,优化大语言模型服务效率的探索

作者 王伟 PAI引擎团队 近年来&#xff0c;人工智能领域的快速发展推动了大型语言模型的广泛应用&#xff0c;随之而来的是对其服务效率的迫切需求。论文《NanoFlow&#xff1a;Towards Optimal Large Language Model Serving Throughput》提出了一种突破性的新型服务框架&…

CTF 技能树 LOG -GIT泄露 笔记

log 使用虚拟机kali操作 python2 安装 apt-get install python2 进入root用户&#xff0c;下载克隆git hack库 git clone https://github.com/BugScanTeam/GitHack sudo passwd root 修改root 命名密码为root 切换登录 su root 终端进入home/kali/GitHack/ python GitH…

2024年 AI大模型我该买一张什么卡?

有钱啥也不用说&#xff0c;买张最贵的就是了。对囊中羞涩的我还说&#xff0c;我该买张什么样的显卡呢&#xff1f; 我的旧显卡RTX1060 6G&#xff0c;满负荷消耗功率110多瓦&#xff0c;几乎达到设计最大TDP&#xff0c;周日时拿了朋友的RTX3060Ti 8G&#xff0c;发现是锁算…

【中国留学网-注册_登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

手机在网状态查询接口如何用C#进行调用?

一、什么是手机在网状态查询接口&#xff1f; 手机在网状态查询接口是利用实时数据来对手机号码在运营商网络中的状态进行查询的工具&#xff0c;包括正常使用状态、停机状态、不在网状态、预销户状态等。 二、手机在网状态查询适用哪些场景&#xff1f; 例如&#xff1a;商…

Android RecyclerView 实现 GridView ,并实现点击效果及方向位置的显示

效果图 一、引入 implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30 二、使用步骤 1.Adapter public class UnAdapter extends BaseQuickAdapter<UnBean.ResultBean, BaseViewHolder> {private int selectedPosition RecyclerView.NO_POSITIO…