小脚本,大用处:10个Python自动化脚本助你提高效率

小脚本,大用处:10个Python自动化脚本助你提高效率

编程文章jaq1232025-02-01 15:44:1745A+A-

转载说明:原创不易,未经授权,谢绝任何形式的转载

现在的时代已经到了几乎一切都可以自动化的地步。你日常工作中需要做的事情,例如发送电子邮件、请求 API、校对文本、PDF提取等等,都可以轻松自动化,这将为你节省大量时间。在这篇文章中,我将为你展示10个日常Python自动化脚本。所以,首先将这篇文章先收藏再阅读,让我们开始吧

自动化不是懒惰,而是高效

Klaus Schwab

Klaus Schwab 是世界经济论坛(World Economic Forum)的创始人和执行主席。他是瑞士经济学家和工程师,曾担任日内瓦大学教授。世界经济论坛是一个非营利组织,旨在促进全球范围内的经济发展和合作。该组织每年在瑞士举办达沃斯论坛(Davos Forum),邀请各国政要、商界领袖和社会精英共同探讨全球经济和社会问题。

1、发送带附件的电子邮件

需要发送带附件的电子邮件吗?使用此自动化脚本,它使用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.")

注:这脚本同样支持中文,不过需要使用对应的中文校对模型。你可以将 ProofRead 函数中的 lm.load("en") 改为 lm.load("zh"),以加载中文校对模型,然后将需要校对的中文文本作为参数传入函数即可。

3、生成和读取二维码

现在,你可以通过程序生成自己的二维码,甚至可以通过程序读取二维码。这个自动化脚本将使你更容易地用几行代码创建二维码。该脚本使用Qrcode模块创建二维码图像,使用Pyzbar模块读取二维码图像。

  1. 读取任何二维码
  2. 创建任何数据的二维码
  3. 在你的项目中使用
# 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模块对照片进行压缩,而不会降低其实际质量。

  1. 压缩多张照片
  2. 压缩成任何图像格式
  3. 在你的项目中使用

针对单个图片

# 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")

在该脚本中,batch_compressing() 函数接受指定目录作为参数,并在该目录下遍历所有的 .png 和 .jpg 文件,并分别调用 compressing() 函数进行压缩。压缩后的文件命名为原始文件名加上 "_compress" 后缀,以避免覆盖原始文件。

5、使用Urllib3发送API请求

这个自动化脚本将帮助你使用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)

Speedtest 模块默认会连接到最近的服务器进行速度测试,因此会自动连接到国内的测试服务器进行测试。但是,由于网络环境和网络运营商的影响,实际测试结果可能与你的网络环境有关,可能存在误差。

7、提取PDF表格

如果你正在寻找一个帮助你提取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")

提取出的 PNG 图片会保存在脚本所在目录下,以"p[页码]-[图片编号].png"的形式命名。例如,如果在脚本所在目录下运行该脚本来提取名为“file.pdf”的 PDF 文件中的图片,则提取出的第一页的第一张图片会保存为“p1-1.png”,第一页的第二张图片会保存为“p1-2.png”,以此类推。

9、获取电脑硬件配置信息

不需要使用任何硬件监控软件,只需要使用 Python 即可完成。此自动化脚本使用 Psutil 模块帮助您获取 CPU 规格、内存规格、硬盘规格等电脑硬件配置信息。

  1. 可用于实时获取硬件信息
  2. 可在您的项目中使用
  3. 更多功能等待您去探索
# 获取电脑硬件配置信息

# 导入 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

非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正

点击这里复制本文地址 以上内容由jaq123整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

苍茫编程网 © All Rights Reserved.  蜀ICP备2024111239号-21