文章目录

  • 前言
  • 整数变量​
  • 字符串变量​
  • 列表变量​
  • 算术操作​
  • 比较操作​
  • 逻辑操作​
  • 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!”)​

    作者:英英_

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python自动化学习指南

    发表回复