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

python 自动化教程

文章目录

  • 前言
  • 整数变量​
  • 字符串变量​
  • 列表变量​
  • 算术操作​
  • 比较操作​
  • 逻辑操作​
  • if语句​
  • for循环遍历列表​
  • while循环​
  • 定义函数​
  • 调用函数​
  • 导入模块​
  • 使用模块中的函数​
  • 启动Chrome浏览器​
  • 打开网页​
  • 定位元素并输入内容​
  • 提交表单​
  • 关闭浏览器​
  • 发送GET请求获取网页内容​
  • 使用BeautifulSoup解析HTML​
  • 提取网页标题​
  • 读取CSV文件​
  • 数据预览​
  • 数据清洗 - 删除包含缺失值的行​
  • 数据分析 - 统计描述​
  • 创建新目录​
  • 复制文件​
  • 移动文件​
  • 读取销售数据Excel文件​
  • 数据清洗 - 假设去除重复行​
  • 数据分析 - 计算每个产品的总销售额​
  • 生成新报表​
  • 邮件配置​
  • 添加邮件正文​
  • 添加附件​
  • 发送邮件​
  • 等待页面特定元素加载完成​
  • 配置日志记录​
  • 下载必要数据​
  • 模拟鼠标点击​
  • 模拟键盘输入​


前言

在当今快节奏的工作环境中,重复性任务耗时费力,而 Python 自动化技术宛如神奇助手,能极大提升效率。这份教程将带你开启 Python 自动化学习之旅,从基础语法、常用自动化库,到办公、爬虫等实战场景,助力你快速掌握这一高效技能,轻松应对工作挑战。


一、Python 自动化基础​
(一)Python 基础语法回顾​
变量与数据类型​
Python 拥有多种数据类型,如整数(int)、浮点数(float)、字符串(str)、列表(list)、元组(tuple)、字典(dict)等。变量声明无需指定类型,直接赋值即可。例如:​

整数变量​

age = 25​

字符串变量​

name = "John"​

列表变量​

fruits = [“apple”, “banana”, “cherry”]​

操作符​
包括算术操作符(如+、-、*、/、%)、比较操作符(如==、!=、>、<、>=、<=)、逻辑操作符(and、or、not)等。​

算术操作​

result = 5 + 3​

比较操作​

is_greater = 10 > 5​

逻辑操作​

is_valid = (age > 18) and (name!= “”)​

条件语句与循环语句​
条件语句(if、elif、else)用于根据条件执行不同代码块;循环语句(for、while)可实现代码重复执行。​

if语句​

if age >= 18:​
print(“成年人”)​
else:​
print(“未成年人”)​

for循环遍历列表​

for fruit in fruits:​
print(fruit)​

while循环​

count = 0​
while count < 5:​
print(count)​
count += 1​

函数与模块​
函数通过def关键字定义,提升代码复用性;模块是包含 Python 代码的文件,使用import导入。​

定义函数​

def add_numbers(a, b):​
return a + b​

调用函数​

sum_result = add_numbers(3, 4)​

导入模块​

import math​

使用模块中的函数​

sqrt_result = math.sqrt(16)​

(二)Python 自动化常用库​
Selenium - Web 浏览器自动化​
Selenium 可模拟用户在浏览器中的操作,如点击、输入、滚动等,常用于 Web 测试和爬虫开发。​
安装:通过pip install selenium安装。需下载对应浏览器的 WebDriver,如 ChromeDriver。​
基本操作示例:​

from selenium import webdriver​
from selenium.webdriver.common.by import By​

启动Chrome浏览器​

driver = webdriver.Chrome()​

打开网页​

driver.get(“https://www.example.com”)​

定位元素并输入内容​

element = driver.find_element(By.NAME, “q”)​
element.send_keys(“Python自动化”)​

提交表单​

element.submit()​

关闭浏览器​

driver.quit()​

Requests 与 BeautifulSoup - 网络爬虫​
Requests库用于发送 HTTP 请求获取网页内容,BeautifulSoup库用于解析和提取网页数据。​
安装:pip install requests beautifulsoup4。​
示例代码:​

import requests​
from bs4 import BeautifulSoup​

发送GET请求获取网页内容​

response = requests.get(“https://www.example.com”)​

使用BeautifulSoup解析HTML​

soup = BeautifulSoup(response.text, ‘html.parser’)​

提取网页标题​

title = soup.find(‘title’).text​
print(title)​

Pandas - 数据处理与分析​
Pandas 在数据处理和分析方面功能强大,可读写文件、清洗数据、分析数据等。​
安装:pip install pandas。​
示例:​

import pandas as pd​

读取CSV文件​

data = pd.read_csv(‘data.csv’)​

数据预览​

print(data.head())​

数据清洗 - 删除包含缺失值的行​

cleaned_data = data.dropna()​

数据分析 - 统计描述​

summary = cleaned_data.describe()​
print(summary)​

OS 与 Shutil - 文件和目录操作​
os模块用于操作系统交互,shutil模块用于文件和目录操作。​
安装:这两个模块是 Python 标准库,无需额外安装。​
示例:​

import os​
import shutil​

创建新目录​

os.mkdir(‘new_directory’)​

复制文件​

shutil.copy(‘example.txt’, ‘new_directory/example.txt’)​

移动文件​

shutil.move(‘new_directory/example.txt’, ‘another_directory/’)​

二、Python 自动化实战应用​
(一)自动化办公​
文件处理​
批量重命名文件:假设要将某文件夹下所有图片文件(.jpg格式)重命名,在文件名前加上 “image_” 前缀。​

import os​

folder_path = ‘your_folder_path’​
for filename in os.listdir(folder_path):​
if filename.endswith(’.jpg’):​
new_name = ‘image_’ + filename​
os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_name))​

文件分类整理:将不同类型文件分类存放到对应文件夹。​

import os​
import shutil​

folder_path = ‘your_folder_path’​
file_types = {​
‘images’: [’.jpg’, ‘.png’, ‘.jpeg’],​
‘documents’: [‘.doc’, ‘.docx’, ‘.pdf’],​
‘videos’: [‘.mp4’, ‘.avi’, ‘.mkv’]​
}​

for filename in os.listdir(folder_path):​
file_extension = os.path.splitext(filename)[1]​
for category, extensions in file_types.items():​
if file_extension in extensions:​
category_folder = os.path.join(folder_path, category)​
if not os.path.exists(category_folder):​
os.makedirs(category_folder)​
shutil.move(os.path.join(folder_path, filename), os.path.join(category_folder, filename))​

数据分析与报表生成​
以处理销售数据为例,从 Excel 文件读取数据,分析后生成新报表。​

import pandas as pd​

读取销售数据Excel文件​

sales_data = pd.read_excel(‘sales_data.xlsx’)​

数据清洗 - 假设去除重复行​

unique_sales_data = sales_data.drop_duplicates()​

数据分析 - 计算每个产品的总销售额​

product_sales = unique_sales_data.groupby(‘Product’)[‘Sales’].sum()​

生成新报表​

product_sales.to_excel(‘product_sales_report.xlsx’, index=True)​

邮件发送​
使用smtplib和email库发送自动化邮件,如发送包含销售报表的邮件。​

import smtplib​
from email.mime.multipart import MIMEMultipart​
from email.mime.text import MIMEText​
from email.mime.application import MIMEApplication​

邮件配置​

sender_email = "your_email@example.com"​
receiver_email = "recipient_email@example.com"​
password = "your_email_password"​
message = MIMEMultipart()​
message[‘Subject’] = "销售报表"​
message[‘From’] = sender_email​
message[‘To’] = receiver_email​

添加邮件正文​

body = "这是本月的销售报表,请查收。"​
message.attach(MIMEText(body, ‘plain’))​

添加附件​

with open(‘product_sales_report.xlsx’, ‘rb’) as file:​
part = MIMEApplication(file.read(), Name=‘product_sales_report.xlsx’)​
part[‘Content-Disposition’] = f’attachment; filename=“product_sales_report.xlsx”'​
message.attach(part)​

发送邮件​

with smtplib.SMTP(‘smtp.example.com’, 587) as server:​
server.starttls()​
server.login(sender_email, password)​
server.sendmail(sender_email, receiver_email, message.as_string())​

(二)Web 爬虫自动化​
简单网页数据抓取​
抓取某新闻网站最新新闻标题和链接。​

import requests​
from bs4 import BeautifulSoup​

url = “https://news.example.com"​
response = requests.get(url)​
soup = BeautifulSoup(response.text, ‘html.parser’)​

news_items = soup.find_all(‘div’, class_=‘news-item’)​
for item in news_items:​
title = item.find(‘h2’).text​
link = item.find(‘a’)[‘href’]​
print(f"标题: {title}, 链接: {link}”)​

动态网页数据抓取(处理 JavaScript 渲染)​
对于使用 JavaScript 动态加载数据的网页,借助 Selenium 配合webdriverwait等待页面加载完成后再抓取。​

from selenium import webdriver​
from selenium.webdriver.common.by import By​
from selenium.webdriver.support.ui import WebDriverWait​
from selenium.webdriver.support import expected_conditions as EC​

driver = webdriver.Chrome()​
driver.get(“https://dynamic_news.example.com”)​

等待页面特定元素加载完成​

wait = WebDriverWait(driver, 10)​
news_items = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, ‘news-item’)))​

for item in news_items:​
title = item.find_element(By.TAG_NAME, ‘h2’).text​
link = item.find_element(By.TAG_NAME, ‘a’).get_attribute(‘href’)​
print(f"标题: {title}, 链接: {link}“)​

driver.quit()​

三、Python 自动化项目优化与拓展​
(一)异常处理与日志记录​
异常处理​
在自动化脚本中,合理处理异常可避免脚本因错误中断。使用try - except语句捕获异常。​

import requests​

try:​
response = requests.get(“https://nonexistent.example.com”)​
response.raise_for_status() # 检查请求是否成功,失败则抛出异常​
except requests.RequestException as e:​
print(f"请求出错: {e}”)​

日志记录​
通过logging模块记录脚本运行信息,方便排查问题。​

import logging​

配置日志记录​

logging.basicConfig(filename=‘automation.log’, level=logging.INFO,​
format=‘%(asctime)s - %(levelname)s - %(message)s’)​

try:​
# 自动化脚本代码​
result = 10 / 0 # 模拟错误​
except ZeroDivisionError as e:​
logging.error(f"发生错误: {e}", exc_info=True)​
else:​
logging.info(“脚本执行成功”)​

(二)数据驱动测试与持续集成​
数据驱动测试​
数据驱动测试将测试用例参数化,从外部文件读取数据运行测试。以 Pandas 读取 Excel 数据进行测试为例:​

import pandas as pd​
import unittest​

def add_numbers(a, b):​
return a + b​

class DataDrivenTest(unittest.TestCase):​
def test_addition(self):​
data = pd.read_excel(‘test_data.xlsx’)​
for index, row in data.iterrows():​
num1 = row[‘Number1’]​
num2 = row[‘Number2’]​
expected_result = row[‘ExpectedResult’]​
result = add_numbers(num1, num2)​
self.assertEqual(result, expected_result)​

if name == ‘main’:​
unittest.main()​

持续集成(CI)​
利用工具(如 Jenkins、Travis CI 等)自动构建、测试和部署 Python 自动化项目。以 Travis CI 为例,在项目根目录创建.travis.yml文件配置构建和测试流程。​

language: python​
python:​

  • "3.11"​
    install:​
  • pip install -r requirements.txt​
    script:​
  • python -m unittest discover​

    此配置指定使用 Python 3.11,安装项目依赖(requirements.txt中列出),并运行单元测试。​
    (三)与其他技术结合拓展自动化能力​
    与人工智能(AI)结合​
    如使用 Python 调用自然语言处理(NLP)库(如 NLTK、SpaCy)对文本数据进行自动化处理和分析。​

    import nltk​
    from nltk.sentiment import SentimentIntensityAnalyzer​

下载必要数据​

nltk.download(‘vader_lexicon’)​

sia = SentimentIntensityAnalyzer()​
text = "这部电影太棒了!"​
sentiment = sia.polarity_scores(text)​
print(sentiment)​

与机器人流程自动化(RPA)结合​
通过pyautogui库实现跨系统操作自动化,模拟鼠标和键盘动作。​

import pyautogui​

模拟鼠标点击​

pyautogui.click(100, 100)​

模拟键盘输入​

pyautogui.typewrite(“Hello, World!”)​

相关文章:

  • Conda 完全指南:从环境管理到工具集成
  • 探索C++对象模型:(拷贝构造、运算符重载)成员函数的深度解读(中篇)
  • PYTHON训练营DAY28
  • 18.自动化生成知识图谱的多维度质量评估方法论
  • R语言数据框(datafram)数据的构建及简单分析
  • SAP学习笔记 - 开发12 - CAP 之 开发准备,添加服务
  • MySQL刷题相关简单语法集合
  • 2023年全国青少年信息素养大赛-图形化编程复赛真题—打气球
  • PIC16F18877 的主时钟 设置方法
  • 第八节第四部分:认识泛型、泛型类、泛型接口
  • php fiber 应用
  • OpenCV透视变换
  • Java 应用如何实现 HTTPS:加密数据传输的实用指南
  • Ankr:Web3基础设施的革新者
  • 【第二篇】 初步解析Spring Boot
  • 【Python 算法零基础 3.递推】
  • 防范Java应用中的恶意文件上传:确保服务器的安全性
  • 【Redis】redis用作缓存和分布式锁
  • Docker常见命令解读
  • EXO分布式部署deepseek r1
  • 101岁陕西省军区原司令员冀廷璧逝世,曾参加百团大战
  • 奥古斯都时代的历史学家李维
  • 前四个月人民币贷款增加10.06万亿元,4月末M2余额同比增长8%
  • 多个侵华日军细菌战部队留守名簿文件首次公布
  • 最高降九成!特朗普签署降药价行政令落地存疑,多家跨国药企股价收涨
  • 线下哪些商家支持无理由退货?查询方法公布