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 = "[email protected]"​

receiver_email = "[email protected]"​

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!")​

相关推荐
2303_Alpha8 分钟前
深度学习入门:深度学习(完结)
人工智能·笔记·python·深度学习·神经网络·机器学习
保利九里9 分钟前
数据类型转换
java·开发语言
蚂蚁在飞-14 分钟前
Golang基础知识—cond
开发语言·后端·golang
Brilliant Nemo25 分钟前
Vue2项目中使用videojs播放mp4视频
开发语言·前端·javascript
深度学习入门43 分钟前
机器学习,深度学习,神经网络,深度神经网络之间有何区别?
人工智能·python·深度学习·神经网络·机器学习·机器学习入门·深度学习算法
TNTLWT44 分钟前
Qt控件:交互控件
开发语言·qt
量化金策1 小时前
震荡指标工具
开发语言
北漂老男孩1 小时前
ChromeDriver进程泄漏问题分析与最佳实践解决方案
开发语言·爬虫
李迟1 小时前
Golang实践录:在go中使用curl实现https请求
开发语言·golang·https
森哥的歌2 小时前
Python uv包管理器使用指南:从入门到精通
python·开发工具·uv·虚拟环境·包管理