python 自动化教程

文章目录


前言

在当今快节奏的工作环境中,重复性任务耗时费力,而 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!")​

​

相关推荐
小小张说故事9 小时前
Python 的 __new__ 到底管什么?和 __init__ 的分工一次讲透Python后端python知识整理日新计划
python
墨云安全9 小时前
自动化渗透测试工具有哪些?2026 年引擎原理、任务编排与误报抑制实践
git·测试工具·网络安全·渗透测试·自动化
海宇服务9 小时前
零信任架构实战:基于海宇公安二要素认证即时版构建自动化跨境个人额度申报实名网关
运维·人工智能·架构·自动化
ESDWAN9 小时前
跨境网络延迟、抖动和丢包有什么区别?如何判断业务影响
开发语言·网络·计算机网络·php
Code_Solitude9 小时前
C语言分支结构练习题(华师版)
c语言·开发语言
青少儿编程课堂9 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会C/C++考级:并查集连通块与朋友圈问题解析
c++·python·算法·bfs·信息学竞赛
外收内放10 小时前
数据分析(数据排序)
python·学习·数据分析
从小白到软工10 小时前
4-1 指针
c语言·开发语言·数据结构·经验分享·ai编程
Pniubi10 小时前
agent处理封号怎么解决误封问题
开发语言·python
.Hypocritical.10 小时前
【Java 进阶】泛型深度解析|泛型类、泛型方法、通配符、类型擦除、PECS 原则
java·开发语言·泛型