转载说明:原创不易,未经授权,谢绝任何形式的转载
Midjourney 创作,自动化脚本
现在的时代已经到了几乎一切都可以自动化的地步。你日常工作中需要做的事情,例如发送电子邮件、请求 API、校对文本、PDF提取等等,都可以轻松自动化,这将为你节省大量时间。在这篇文章中,我将为你展示10个日常Python自动化脚本。所以,首先将这篇文章先收藏再阅读,让我们开始吧
自动化不是懒惰,而是高效
Klaus Schwab
1、发送带附件的电子邮件Klaus Schwab 是世界经济论坛(World Economic Forum)的创始人和执行主席。他是瑞士经济学家和工程师,曾担任日内瓦大学教授。世界经济论坛是一个非营利组织,旨在促进全球范围内的经济发展和合作。该组织每年在瑞士举办达沃斯论坛(Davos Forum),邀请各国政要、商界领袖和社会精英共同探讨全球经济和社会问题。
需要发送带附件的电子邮件吗?使用此自动化脚本,它使用Smtplib和Email模块,让您能够发送带有多个文件附件的电子邮件。您可以一次向多个收件人发送任何文件格式。
# 导入所需模块 from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders import smtplib # 发件人信息 sender_mail = "send@xyz.com" # 发件人邮箱 sender_password = "pass" # 发件人邮箱密码 recipients = ["recipient@xyz.com"] # 收件人邮箱 subject = "测试邮件" # 邮件主题 body = "这是一封带有文件的邮件" # 邮件正文 # 创建邮件消息 m = MIMEMultipart() m['From'] = sender_mail # 邮件的发件人 m['To'] = ", ".join(recipients) # 邮件的收件人,可同时发送给多人 m['Subject'] = subject # 邮件主题 m.attach(MIMEText(body, 'plain')) # 添加邮件正文 # 添加附件 files = ["test.csv", "test2.jpg"] # 附件文件列表 for f in files: p = MIMEBase('application', 'octet-stream') p.set_payload(open(f, "rb").read()) encoders.encode_base64(p) p.add_header('Content-Disposition', 'attachment; filename="%s"' % f) m.attach(p) # 发送邮件 server = smtplib.SMTP('smtp.gmail.com', 587) # 连接SMTP服务器 server.starttls() # 启用TLS安全传输 server.login(sender_mail, sender_password) # 登录发件人邮箱 data = m.as_string() # 转换为字符串发送 server.sendmail(sender_mail, recipients, data)# 发送邮件 server.quit() # 断开连接
2、自动化校对文本
通过程序自动纠正你的语法错误。这个自动化脚本将扫描整个文本,找出语法和拼写错误,然后生成更正结果。脚本使用Lmproof模块,这是一个方便校对文档和长文本的模块。
这个实用的脚本能够节省你的时间和精力,同时提高你写作作品的质量。
# Automate Proofreading # pip install lmproof # 导入所需模块 import lmproof as lm # 定义 ProofRead 函数,用于进行校对 def ProofRead(text): proof = lm.load("en") # 加载英文校对模型 corrections = proof.proofread(text) # 进行校对 print("Proofread: ", corrections) # 输出校对结果 # 调用 ProofRead 函数,输入待校对的文本 ProofRead("The brow fox jumpe the lazy dog.")
3、生成和读取二维码注:这脚本同样支持中文,不过需要使用对应的中文校对模型。你可以将 ProofRead 函数中的 lm.load("en") 改为 lm.load("zh"),以加载中文校对模型,然后将需要校对的中文文本作为参数传入函数即可。
现在,你可以通过程序生成自己的二维码,甚至可以通过程序读取二维码。这个自动化脚本将使你更容易地用几行代码创建二维码。该脚本使用Qrcode模块创建二维码图像,使用Pyzbar模块读取二维码图像。
- 读取任何二维码
- 创建任何数据的二维码
- 在你的项目中使用
# Generate and Read Qrcodes # pip install qrcode # pip install pyzbar # pip install pillow # 导入所需模块 import qrcode as qr # 导入 qrcode 模块,用于生成二维码 import pyzbar.pyzbar as pyz# 导入 pyzbar 模块,用于读取二维码 from PIL import Image # 导入 PIL 模块,用于图像处理 # 定义 Create_Qrcode 函数,用于生成二维码 def Create_Qrcode(data): Qr = qr.make(data) # 生成二维码图像 Qr.save("qr.png") # 保存二维码图像 # 定义 Read_Qrcode 函数,用于读取二维码 def Read_Qrcode(qr_img): image = Image.open(qr_img) # 打开二维码图像 qr_data = pyz.decode(image) # 读取二维码图像 print("Decoded: ", qr_data[0].data.decode("utf-8")) # 输出二维码中的数据 # 调用 Create_Qrcode 函数,生成中文文本的二维码 Create_Qrcode("Python编程") # 调用 Read_Qrcode 函数,读取二维码图像并输出其中的数据 Read_Qrcode("qr.png")
4、自动化照片压缩
如果你有许多大小较大的照片并想要将它们压缩,那么这个自动化脚本将会非常有用。它使用OpenCV模块对照片进行压缩,而不会降低其实际质量。
- 压缩多张照片
- 压缩成任何图像格式
- 在你的项目中使用
针对单个图片
# Automate Photo Compression # pip install openCV-python # 导入所需模块 import cv2 as cv # 导入 OpenCV 模块,用于图像处理 # 定义 compressing 函数,用于压缩照片 def compressing(photo): output = "compress.png" # 压缩后的照片名 loadImg = cv.imread(photo) # 读取原始照片 cv.imwrite(output, loadImg, [cv.IMWRITE_PNG_COMPRESSION, 9]) # 压缩并保存照片 print("Image Compressed") # 输出压缩完成信息 # 调用 compressing 函数,对指定的照片进行压缩 compressing("test.png")
指定目录,批量压缩
# Automate Photo Compression # pip install openCV-python import os import cv2 as cv # 定义 compressing 函数,用于压缩照片 def compressing(photo): output = os.path.splitext(photo)[0] "_compress.png" # 压缩后的照片名 loadImg = cv.imread(photo) # 读取原始照片 cv.imwrite(output, loadImg, [cv.IMWRITE_PNG_COMPRESSION, 9]) # 压缩并保存照片 print("Image Compressed") # 输出压缩完成信息 # 定义 batch_compressing 函数,用于批量压缩照片 def batch_compressing(directory): for file_name in os.listdir(directory): if file_name.endswith('.png') or file_name.endswith('.jpg'): photo_path = os.path.join(directory, file_name) compressing(photo_path) # 调用 batch_compressing 函数,对指定目录下所有的照片进行压缩 batch_compressing("photos")
5、使用Urllib3发送API请求在该脚本中,batch_compressing() 函数接受指定目录作为参数,并在该目录下遍历所有的 .png 和 .jpg 文件,并分别调用 compressing() 函数进行压缩。压缩后的文件命名为原始文件名加上 "_compress" 后缀,以避免覆盖原始文件。
这个自动化脚本将帮助你使用Urllib3模块向API发送请求。当你需要向服务器发送一些API请求或想获取网站的HTML源代码时,这个脚本非常有用。
这个方便的脚本在网络爬虫和API用户中非常流行,下面是代码:
# Request API with Urllib3 # pip install urllib3 # 导入所需模块 import urllib3 import json # 设置 API 接口地址 url = "https://api.github.com/test/example" # 创建 urllib3.PoolManager 对象并设置请求头 http = urllib3.PoolManager(headers={'User-Agent': 'Mozilla/5.0'}) # 发送 GET 请求 response = http.request('GET', url) # 输出响应状态码 print("Status: ", response.status) # 如果响应状态码为 200,输出响应内容 if response.status == 200: print("Content: ", response.data)
6、检查网络速度
想要测试你的网络速度,而不必打开浏览器进行测试,那么这个 Python 脚本将会帮助你通过一个速度测试来了解你的网络速度。该脚本使用 Speedtest-CLI 模块,该模块是 OKALA 速度测试网站的一个包装器。
# Automate Speed Test # pip install speedtest-cli # 导入所需模块 import speedtest as sp # 创建 Speedtest 对象 test = sp.Speedtest() # 选择速度测试服务器 server = test.get_servers() test.get_closest_servers() # 测试下载速度 downSpeed = test.download() downSpeed = downSpeed / 1000000 print("Download Speed: ", downSpeed) # 测试上传速度 upSpeed = test.upload() upSpeed = upSpeed / 1000000 print("Upload Speed: ", upSpeed) # 测试延迟 ping = test.results.ping print("Your Ping: ", ping)
7、提取PDF表格Speedtest 模块默认会连接到最近的服务器进行速度测试,因此会自动连接到国内的测试服务器进行测试。但是,由于网络环境和网络运营商的影响,实际测试结果可能与你的网络环境有关,可能存在误差。
如果你正在寻找一个帮助你提取PDF表格的工具,那么这里有一个使用 Camelot 模块的 Python 脚本,该模块以其在不同格式(如XLSX、JSON、CSV等)中提取PDF表格而闻名。
以下是一个示例代码:
# Fetch Tables from PDF # pip install camelot-py[cv] # 导入所需模块 import camelot as cm # 读取 PDF 文件中的所有表格并保存为 CSV 文件 tables = cm.read_pdf('file.pdf', flavor='stream', pages='all') tables.export('file.csv', f='csv', compress=True) # 读取 PDF 文件中的指定表格并保存为 CSV 文件 tables = cm.read_pdf('file.pdf', flavor='stream', pages='1') tables.export('file.csv', f='csv', compress=True) # 读取 PDF 文件中的所有表格并保存为 Excel 文件 tables.export('file.xlsx', f='excel', compress=True) # 读取 PDF 文件中的所有表格并保存为 JSON 文件 tables.export('file.json', f='json', compress=True)
8、提取PDF图片
除了表格之外,你还可以使用 Python 从 PDF 中提取图片。这个自动化脚本使用了 PyMuPDF 和 Pillow 模块,可以帮助你逐页提取图片,并以 PNG 或 JPG 格式保存。当你需要从一个大型的 PDF 文件或者很多 PDF 文件中提取图片时,这个脚本非常有用。
- 逐页提取
- 提取特定页面
- 在您的项目中使用。
以下是一个示例代码:
# Fetch PDF Images # pip install Pillow # pip install PyMuPDF # 导入所需模块 import fitz from PIL import Image def Image_Extracter(pdf_file): # 打开 PDF 文件 doc = fitz.open(pdf_file) # 逐页提取图片 for page_no, p in enumerate(doc): for img_no, img in enumerate(p.getImageList(), start=1): xref = img[0] pic = fitz.Pixmap(doc, xref) if pic.n < 5: # 如果图片是 RGB 格式,则保存为 PNG 文件 im = Image.frombytes("RGB", [pic.width, pic.height], pic.samples) im.save("p%s-%s.png" % (page_no, img_no)) else: # 如果图片是 CMYK 格式,则先转换为 RGB 格式,再保存为 PNG 文件 pic1 = fitz.Pixmap(fitz.csRGB, pic) im = Image.frombytes("RGB", [pic1.width, pic1.height], pic1.samples) im.save("{page_no}-{img_no}.png") pic1 = None # 释放 Pixmap 对象 pic = None # 关闭 PDF 文件 doc.close() # 调用 Image_Extracter 函数,提取指定 PDF 文件中的图片 Image_Extracter("file.pdf")
9、获取电脑硬件配置信息提取出的 PNG 图片会保存在脚本所在目录下,以"p[页码]-[图片编号].png"的形式命名。例如,如果在脚本所在目录下运行该脚本来提取名为“file.pdf”的 PDF 文件中的图片,则提取出的第一页的第一张图片会保存为“p1-1.png”,第一页的第二张图片会保存为“p1-2.png”,以此类推。
不需要使用任何硬件监控软件,只需要使用 Python 即可完成。此自动化脚本使用 Psutil 模块帮助您获取 CPU 规格、内存规格、硬盘规格等电脑硬件配置信息。
- 可用于实时获取硬件信息
- 可在您的项目中使用
- 更多功能等待您去探索
# 获取电脑硬件配置信息 # 导入 Psutil 模块 # pip install psutil import psutil as specs # 获取 CPU 规格 print("Cpu Cores: ", specs.cpu_count()) # 获取 CPU 核心数 print("Cpu Usage: ", specs.cpu_percent()) # 获取 CPU 使用率 print("Cpu Frequency: ", specs.cpu_freq()) # 获取 CPU 频率 print("Cpu Stats: ", specs.cpu_stats()) # 获取 CPU 统计信息 # 获取内存规格 print("Memory Usage: ", specs.virtual_memory()) # 获取内存使用情况 print("Memory Swap: ", specs.swap_memory()) # 获取内存交换情况 # 获取磁盘规格 print("Disk Usage: ", specs.disk_usage('/')) # 获取磁盘使用情况 print("Disk IO: ", specs.disk_io_counters()) # 获取磁盘 I/O 情况 print("Disk Partitions: ", specs.disk_partitions()) # 获取磁盘分区信息
10、SVG转PNG
使用这个自动化脚本将SVG文件轻松转换为PNG格式,脚本使用了Svglib和Reportlab模块。当你需要同时将大量SVG文件转换为PNG格式时,这个脚本非常有用。
指定图片转换
# SVG to PNG # 安装依赖:pip install svglib # 安装依赖:pip install reportlab from svglib import svglib from reportlab.graphics import renderPM def Svg_to_Png(image): # 读取 SVG 文件并转为 ReportLab Graphics 对象 svg = svglib.svg2rlg(image) # 将 Graphics 对象渲染为 PNG 图片并保存 renderPM.drawToFile(svg, image.replace('.svg', '.png'), fmt="PNG") print('Converted: ' image) if __name__ == '__main__': Svg_to_Png('test.svg')
指定目录批量转换
import os from svglib import svglib from reportlab.graphics import renderPM def batch_SVG_to_PNG(svg_dir): # 遍历指定目录下的所有文件 for svg_file in os.listdir(svg_dir): # 判断文件是否是svg格式 if svg_file.endswith('.svg'): # 拼接svg文件路径 svg_path = os.path.join(svg_dir, svg_file) # 将svg文件转换成reportlab graphics对象 svg = svglib.svg2rlg(svg_path) # 拼接生成png文件的路径 png_file = os.path.splitext(svg_file)[0] '.png' png_path = os.path.join(svg_dir, png_file) # 将reportlab graphics对象转换成png格式的图片,并保存到指定路径 renderPM.drawToFile(svg, png_path, fmt="PNG") # 输出转换完成的文件名 print('Converted: ' svg_file)
结束
总之,Python是一门功能强大的编程语言,其模块库丰富、易于使用。在生活和工作中,我们有很多重复的、繁琐的任务,使用Python脚本来自动化这些任务可以大大提高我们的效率和准确性,让我们的生活和工作更加轻松、高效。希望本文的介绍可以给您带来启示,让您能够更好地利用Python来处理您的日常任务。
今天的分享就到这里,感谢你的阅读,希望能够帮助到你,文章创作不易,如果你喜欢我的分享,别忘了点赞转发,让更多有需要的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。
原文:https://python.plainenglish.io/10-python-automation-scripts-for-everyday-ebaca26b82d7
作者:Haider Imtiaz
非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正