Python 自动化脚本系列:第1集

昨天写了一篇介绍如何使用Python实现自动化任务的,文章末尾介绍了一个简单的自动化脚本,因此今天编号从2开始。顺便附上昨天的文章链接:

Python 自动化脚本系列:介绍

欢迎关注博主,持续输出更多Python相关内容,一起学习进步。

2. 用 PyAutoGUI 自动化任务

PyAutoGUI 是一个 Python 库,允许你通过控制鼠标和键盘来自动化 GUI(图形用户界面)任务。它提供了一个简单直观的 API,用于模拟用户与图形用户界面的交互。利用 PyAutoGUI,你可以自动执行重复性任务,比如填写表单、点击按钮、输入文本和截屏。它支持跨平台自动化,兼容于 Windows、macOS 和 Linux。下面是一个使用 PyAutoGUI 自动执行简单任务的示例:


import pyautogui  
import time  # 等待 2 秒钟,让用户切换到所需窗口  
time.sleep(2)  
# 打开文本编辑器(假设它在 macOS 的应用程序文件夹中)  
pyautogui.press('command')  
pyautogui.typewrite('space')  
pyautogui.typewrite('textedit')  
pyautogui.press('enter')  
# 等待文本编辑器打开  
time.sleep(2)  
# 输入消息  
pyautogui.typewrite('Hello, World!')  
# 保存文件  
pyautogui.hotkey('command', 's')  
pyautogui.typewrite('message.txt')  
pyautogui.press('enter')  
# 关闭文本编辑器  
pyautogui.hotkey('command', 'q')

PyAutoGUI 提供了许多鼠标和键盘控制的函数,包括移动鼠标、点击、拖拽、输入文本和按键。它还提供图像识别功能,允许你定位并与屏幕上的特定图形元素进行交互。PyAutoGUI 特别适用于自动化涉及与桌面应用程序交互或在多个软件工具之间执行重复操作的任务。

3. 使用 Pandas 自动化数据分析

Pandas 是一个功能强大的 Python 库,用于数据处理和分析。它提供了数据结构和函数,使得处理结构化数据(如电子表格或 SQL 数据库中的表格数据)变得简单。通过 Pandas,你可以自动执行各种数据分析任务,包括数据清洗、转换、筛选、聚合和可视化。它与其他 Python 库(如 NumPy 用于数值计算和 Matplotlib 用于数据可视化)结合良好。下面是一个使用 Pandas 自动分析包含销售数据的 CSV 文件的示例:


import pandas as pd  # 读取 CSV 文件到 DataFrame  
df = pd.read_csv('sales_data.csv')  
# 显示 DataFrame 的前几行  
print(df.head())  
# 按产品类别计算总销售额  
sales_by_category = df.groupby('Category')['Sales'].sum()  
print(sales_by_category)  
# 过滤 DataFrame,只包括销售额高于一定阈值的行  
high_sales = df[df['Sales'] > 1000]  
print(high_sales)  
# 基于条件创建新列  
df['Discount'] = df['Price'].apply(lambda x: 0.1 if x > 50 else 0)  
print(df.head())  
# 将修改后的 DataFrame 保存到新的 CSV 文件  
df.to_csv('updated_sales_data.csv', index=False)

在这个示例中,使用 Pandas 将 CSV 文件读取到 DataFrame 中,DataFrame 是一个二维带标签的数据结构。然后我们可以对 DataFrame 执行各种操作,比如显示前几行、按产品类别计算总销售额、基于条件过滤行、创建新列,并将修改后的数据保存到新的 CSV 文件中。Pandas 提供了许多用于数据操作的函数,包括合并、重塑和聚合数据。它还支持处理缺失数据、处理时间序列数据和执行统计分析。通过利用 Pandas,你可以自动执行重复性的数据分析任务,节省时间和精力,从大型数据集中提取见解。

4. 使用 PyTest 进行测试自动化

测试自动化对于确保软件应用程序的质量和可靠性至关重要。Python 提供了几个测试框架,其中最流行和功能丰富的框架之一是 PyTest。PyTest 是一个测试框架,它简化了编写和运行 Python 代码的测试。它为定义测试用例、断言和测试固件提供了简单和表达性的语法。PyTest 支持各种类型的测试,包括单元测试、集成测试和功能测试。下面是一个使用 PyTest 自动化测试简单 Python 函数的示例:


# calculator.py  
def add(a, b):  return a + b  def subtract(a, b):  return a - b  
# test_calculator.py  
import pytest  
from calculator import add, subtract  
def test_add():  assert add(2, 3) == 5  assert add(-1, 1) == 0  assert add(0, 0) == 0  
def test_subtract():  assert subtract(5, 3) == 2  assert subtract(-1, 1) == -2  assert subtract(0, 0) == 0  
def test_add_invalid_input():  with pytest.raises(TypeError):  add('2', 3)  
def test_subtract_invalid_input():  with

5. 演示:用于文件组织的 Python 脚本

为了展示 Python 自动化的强大功能,让我们通过一个实际的例子来演示如何自动组织文件。假设你有一个文件夹,其中包含各种文件 — 文档、图片、视频等。手动将这些文件分类到适当的子文件夹中可能是一个繁琐的任务。然而,通过一个 Python 脚本,我们可以轻松地自动完成这个任务。下面

是一个样本 Python 脚本,根据文件扩展名来组织文件:


import os  
import shutil  # 定义主文件夹路径  
main_folder = "/path/to/your/folder"  
# 为不同类型的文件创建子文件夹  
subfolders = {  "Documents": [".pdf", ".doc", ".docx", ".txt"],  "Images": [".jpg", ".jpeg", ".png", ".gif"],  "Videos": [".mp4", ".avi", ".mov"],  "Audio": [".mp3", ".wav", ".aac"],  "Others": []  
}  
# 遍历主文件夹中的文件  
for filename in os.listdir(main_folder):  file_path = os.path.join(main_folder, filename)  # 检查是否为文件(而不是文件夹)  if os.path.isfile(file_path):  # 获取文件扩展名  _, extension = os.path.splitext(filename)  # 确定适当的子文件夹  subfolder = "Others"  for folder, extensions in subfolders.items():  if extension.lower() in extensions:  subfolder = folder  break  # 如果子文件夹不存在,则创建它  subfolder_path = os.path.join(main_folder, subfolder)  os.makedirs(subfolder_path, exist_ok=True)  # 将文件移动到适当的子文件夹中  destination_path = os.path.join(subfolder_path, filename)  shutil.move(file_path, destination_path)  print(f"Moved {filename} to {subfolder} folder.")

让我们逐步解释这个脚本:

  1. 我们导入所需的模块:os 用于文件和目录操作,shutil 用于文件移动。
  2. 我们使用 main_folder 变量定义包含要组织的文件的文件夹路径。
  3. 我们创建一个名为 subfolders 的字典,将子文件夹名称映射到相应文件扩展名列表。“Others” 子文件夹用于未指定扩展名的文件。
  4. 我们使用 os.listdir() 遍历主文件夹中的每个文件。
  5. 对于每个文件,我们使用 os.path.isfile() 检查它是否为文件(而不是文件夹)。
  6. 我们使用 os.path.splitext() 提取文件扩展名。
  7. 我们根据扩展名检查文件应该归属的子文件夹,并将其移动到该子文件夹中。
  8. 最后,我们打印一条消息,指示文件的移动操作。

这个脚本演示了 Python 如何自动根据文件扩展名组织文件。通过运行这个脚本,指定文件夹中的所有文件将自动排序到适当的子文件夹中,节省你的时间和精力。

6. 自动发送电子邮件

Python 提供了 smtplib 模块用于通过 SMTP(简单邮件传输协议)发送电子邮件。你可以自动化发送电子邮件的任务,比如发送通知、报告或个性化消息。

示例:发送个性化电子邮件

假设你有一个收件人列表,并想向每个人发送个性化电子邮件。下面是如何使用 Python 自动化这个任务的示例:


import smtplib  
from email.mime.text import MIMEText  
from email.mime.multipart import MIMEMultipart  sender_email = 'your_email@example.com'  
sender_password = 'your_email_password'  recipients = [  {'name': 'John Doe', 'email': 'john@example.com'},  {'name': 'Jane Smith', 'email': 'jane@example.com'},  {'name': 'Mike Johnson', 'email': 'mike@example.com'}  
]  for recipient in recipients:  message = MIMEMultipart()  message['From'] = sender_email  message['To'] = recipient['email']  message['Subject'] = 'Personalized Email'  body = f"Dear {recipient['name']},\n\nThis is a personalized email just for you!"  message.attach(MIMEText(body, 'plain'))  server = smtplib.SMTP('smtp.example.com', 587)  server.starttls()  server.login(sender_email, sender_password)  server.send_message(message)  server.quit()

这段代码创建了一个包含收件人姓名和电子邮件地址的收件人列表。然后,它遍历收件人并使用 email 模块中的 MIMEMultipartMIMEText 类构建了每个收件人的个性化电子邮件。电子邮件包含了一个个性化的问候语。最后,它建立与 SMTP 服务器的连接,使用发件人的凭据登录,发送电子邮件,然后关闭连接。

7. 使用 Selenium 自动化 Web 浏览器交互

Selenium 是一个强大的工具,用于自动化 Web 浏览器交互。它允许你模拟用户操作,比如点击按钮、填写表单和在页面之间导航。Selenium 的 Python 绑定提供了一种方便的方式来自动化基于 Web 的任务。

示例:自动化 Web 表单提交

假设你想自动填写并提交一个 Web 表单的过程。下面是如何使用 Selenium 实现这一目标的示例:


from selenium import webdriver  
from selenium.webdriver.common.by import By  
from selenium.webdriver.support.ui import Select  # 创建一个 Chrome 驱动器的新实例  
driver = webdriver.Chrome()  # 导航到 Web 表单页面  
driver.get('https://example.com/form')  # 填写表单字段  
name_field = driver.find_element(By.NAME, 'name')  
name_field.send_keys('John Doe')  email_field = driver.find_element(By.NAME, 'email')  
email_field.send_keys('john@example.com')  country_select = Select(driver.find_element(By.NAME, 'country'))  
country_select.select_by_visible_text('United States')  # 提交表单  
submit_button = driver.find_element(By.XPATH, '//button[@type="submit"]')  
submit_button.click()  # 关闭浏览器  
driver.quit()

这段代码使用 Selenium 自动化填写和提交 Web 表单的过程。它创建一个 Chrome 驱动器的新实例,导航到表单页面,使用各种定位策略(如 By.NAMEBy.XPATH)定位表单字段,并填写所需的值,最后点击提交按钮。最后,它关闭了浏览器。

8. 使用 Python 进行任务调度和自动化

Python 提供了几个用于调度和自动化任务的库和工具,如 schedule 库和 cron 实用程序。这些工具允许你在特定时间间隔或指定时间运行 Python 脚本。

示例:调度每日任务

假设你想在每天特定的时间运行一个 Python 脚本。下面是如何使用 schedule 库实现这一目标的示例:


import schedule  
import time  def daily_task():  # 每日任务的代码放在这里  print("Running daily task...")  schedule.every().day.at("09:00").do(daily_task)  while True:  schedule.run_pending()  time.sleep(1)

这段代码定义了一个名为 daily_task() 的函数,其中包含你想要每天运行的任务代码。然后,它使用 schedule 库将任务调度为每天上午 9 点运行。while 循环不断检查待定的调度任务,并在其指定的时间运行它们。time.sleep(1) 语句介绍了每次检查之间的一秒延迟,以防止过多的 CPU 使用。

9. 使用 openpyxl 自动化 Excel 操作

Python 提供了 openpyxl 库,用于自动化 Microsoft Excel 操作,如读写数据、格式化单元格和执行计算。它允许你以编程方式与 Excel 文件交互。

示例:更新 Excel 电子表格数据

假设你有一个包含数据的 Excel 电子表格,并且想根据某些条件更新特定的单元格。下面是如何使用 openpyxl 自动化这个任务的示例:


from openpyxl import load_workbook  # 加载 Excel 工作簿  
workbook = load_workbook('data.xlsx')  
sheet = workbook.active  # 根据条件更新单元格值  
for row in sheet.iter_rows(min_row=2, values_only=True):  if row[1] > 100:  sheet.cell(row=row[0], column=3).value = 'High'  else:  sheet.cell(row=row[0], column=3).value = 'Low'  # 保存更新后的工作簿  
workbook.save('updated_data.xlsx')

这段代码使用 load_workbook() 方法从现有的 Excel 工作簿中加载工作簿。然后,它使用 iter_rows() 方法迭代从第二行开始的每一行,并根据条件更新第三列的单元格值。最后,它将更新后的工作簿保存到一个新文件中。

10. 使用 PyPDF2 自动化 PDF 操作

Python 提供了 PyPDF2 库,用于自动化 PDF 文件的操作,比如合并、拆分和提取文本。它允许你以编程方式操作 PDF 文档。

示例:合并 PDF 文件

假设你有多个 PDF 文件,想将它们合并成一个 PDF 文档。下面是如何使用 PyPDF2 实现这一目标的示例:


from PyPDF2 import PdfMerger  # 创建一个 PdfMerger 对象  
merger = PdfMerger()  # 要合并的 PDF 文件列表  
pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf']  # 将每个 PDF 文件附加到合并器对象  
for pdf_file in pdf_files:  merger.append(pdf_file)  # 将合并后的 PDF 写入到一个新文件中  
merger.write("merged.pdf")  
merger.close()

这段代码从 PyPDF2 库中创建了一个 PdfMerger 对象。然后,它指定了一个要合并的 PDF 文件列表。它遍历每个 PDF 文件,并使用 append() 方法将其附加到合并器对象中。最后,

它使用 write() 方法将合并后的 PDF 写入到一个新文件中。

这些 Python 库和工具提供了强大的功能,可以帮助你自动化各种任务,从文件操作和数据分析到 Web 浏览器交互和电子邮件发送。通过利用这些工具,你可以提高工作效率,减少重复性任务的时间和精力消耗。

总结

今天我们学习了10个Python自动化脚本,其中包括对excel、pdf等文件的操作,熟悉了如何使用python实现邮件自动化,如何自动化操作界面以及实现浏览器操作等,希望能对你的日常有所帮助。

欢迎关注博主带来更多python自动化脚本。

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

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

相关文章

[windows系统安装/重装系统][step-2]BIOS设置UEFI引导、磁盘分区GPT分区、安装系统[含完整操作拍照图片]

背景 先准备U盘启动盘和系统镜像: [windows系统安装/重装系统][step-1]U盘启动盘制作,微软官方纯净系统镜像下载 前言(略长,建议可跳过) 我的笔记本升级了CPU升级了内存后出现了一个小问题, 每次启动徽标显示后会…

(delphi11最新学习资料) Object Pascal 学习笔记---第11章第2节 (高级接口技术)

11.2 高级接口技术 ​ 为了进一步深入探讨接口的功能,在我们研究现实世界接口的使用场景之前,有必要介绍一些接口的高级技术特性,例如类如何实现多个接口,或如何用不同名称的方法实现接口方法(以防名称冲突&#xff0…

【Pychart】jupyter中pyecharts无法显示问题无法使用/No module named pyecharts

无法显示或No module,一般就是更换python版本后,没有在新的python里安装jupyter;另外原因就是引用方式问题,就是import方式不对;都解决后,有报错没有add,或者str问题。 最后的解决方案竟然是bin…

智慧旅游推动旅游服务智慧化转型:借助智能科技的力量,实现旅游资源的精准匹配和高效利用,为游客提供更加便捷、舒适的旅游环境

目录 一、引言 二、智慧旅游的定义与特点 (一)智慧旅游的定义 (二)智慧旅游的特点 三、智能科技在旅游服务中的应用 (一)大数据分析助力旅游决策 (二)人工智能实现个性化推荐…

Android 网络请求 实现

Android 网络请求 实现 一、背景 在Android开发中,网络请求是一个非常常见的需求。应用程序可能需要与远程服务器通信来获取数据、上传文件、验证用户身份等等。背景下,Android应用通常会面临以下几个主要情况和挑战: ①数据交互: 许多应用程序需要从服务器获取数据,例…

杰发科技AC7840——软件Sent_HAL39X

0. 序 截止2024.5.8,杰发的MCU没有硬件Sent功能,因此使用PWM模拟Sent来试试。 测试下7840的软件sent功能。 参考链接:SENT协议应用笔记 - TechPlus汽车工坊的文章 - 知乎 SENT协议 1. Sent功能测试 使用提供的软件Sent代码在7840上测试&a…

医疗图像处理2023年CVPR:Label-Free Liver Tumor Segmentation-无标签肝肿瘤分割

目录 一、摘要 二、介绍 三、相关工作 四、网络框架 1.位置选择 2.纹理处理 3.形状生成 4.后处理 5.参数设计 五、实验 1.数据集: 2.评价指标: 3.实现: 4.结果: 六、结论 一、摘要 通过在CT扫描中使用合成肿瘤&am…

8086 汇编学习 Part 9

端口的读写 CPU 的邻居 CPU 内部的寄存器内存单元端口(各种接口卡、网卡,显卡,主板上的接口芯片等) 各种芯片工作时,都有一些寄存器由 CPU 读写从 CPU 角度,将各寄存器当端口,并统一编制CPU …

openGauss学习笔记-278 openGauss性能调优-实际调优案例07-改写SQL消除子查询(案例2)

文章目录 openGauss学习笔记-278 openGauss性能调优-实际调优案例07-改写SQL消除子查询(案例2)278.1 现象描述278.2 优化说明openGauss学习笔记-278 openGauss性能调优-实际调优案例07-改写SQL消除子查询(案例2) 278.1 现象描述 如下SQL语句: UPDATE normal_date n SET…

webservice和TCP类型接口测试

1.webservice类型接口 1.1.webservice类型接口介绍 Web服务(WebService)是一种基于网络的应用程序接口(API),可通过网络来进行通信和交互。它们使用标准化的协议和格式来进行通信,最常见的是使用XML&#…

puppyteer

puppyteer 今天自己加了一个需求,尝试使用puppyteer来实现自动化录制视频,一开始的想法是先开启录屏工具,在使用puppyteer来做浏览器自动化,经过调研后发现有Puppeteer 屏幕录像机库,直接使用puppeteer-screen-record…

Java设计模式-工厂

Java设计模式中,工厂模式主要包括普通工厂模式以及抽象工厂模式,普通工厂模式是用于制造输出不同类型的对象,抽象工厂模式是用于制造输出不同类型的普通工厂,本文主要描述工厂模式的基本用法。 如上所示,使用普通工厂模…

SSH简介:网络安全的守护者

SSH简介:网络安全的守护者 SSH(Secure Shell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他网络服务。它使用加密技术来保护数据传输的完整性和机密性,防止潜在的窃听和篡改。SSH广泛应用于服务器…

解锁电脑潜能,提高办公效率:这个桌面助手您可千万不能错过!

文章目录 📖 介绍 📖📝 你是否有这些烦恼?📝 一站式效率工具平台📝 插件市场:无限扩展的可能📝 如何开始使用🎯 结语 ⚓️ 相关链接 ⚓️ 📖 介绍 &#x1f4…

知乎广告推广开户流程全攻略及费用详解

知乎作为一个高质量的知识分享平台,具有大量高教育背景和购买力的用户群体,成为了众多品牌广告主心仪的目标营销阵地。想要在知乎上精准高效地推广产品或服务,首先需要了解其广告推广的开户流程与相关费用。 一、知乎广告开户流程 1、前期准…

Mysql 数据库 开发规范

(一)建表规约 强制规约 1. 表达是否概念的字段 使用 is_xxx(is_used) 的方式命名 2. 若字段的数据类型为非负数 类型则为 unsigned 3. 若字段的数据类型为 unsigned tinyint 1表示是,0 表示否 4 . 表名、字段名需 使用小写字母 或 数字 正…

ansible批量运维管理

Ansible是一种自动化运维工具,基于Python开发,主要用于自动化IT任务,如配置管理、应用程序部署、软件升级和系统管理等。它集合了众多运维工具(如puppet、cfengine、chef、func、fabric)的优点,实现了批量系…

AI终端设备的自动化分级

摘要: 大语言模型(LLM)被认为是通用人工智能(AGI)的潜在火花,为构建通用人工智能代理带来了希望。在此基础上,客户端设备在人工智能的帮助下不断发展,从基于应用程序(AP…

Centos 中如何汉化man命令

刚学Linux,记不住命令和选项,很依赖里面的 man 查看命令,但因为着实看不懂,有没有什么办法把man查看命令的信息改成中文 在CentOS 7中,你可以通过安装man-pages-zh包来获取中文的man手册。以下是具体的步骤&#xff1a…

外置网卡设置为Ad-hoc模式,实现多台电脑互相通信

三台电脑Ad-hoc通信 iwconfig查看网卡型号 ifconfig查看网卡ip 第一台电脑 sudo systemctl stop NetworkManager sudo iwconfig wlx90de803014a8 mode ad-hoc sudo iwconfig wlx90de803014a8 essid "CPS-IBSS" sudo iwconfig wlx90de803014a8 channel 1 sudo ip a…