Python自动化脚本指南

liftword1周前 (05-28)技术文章19

以下是一个实用的 Python 自动化脚本指南,包含常见场景示例和分步说明:

一、环境准备

  1. 安装 Python (推荐 3.6+ 版本)
  2. 安装常用库:

bash

pip install requests beautifulsoup4 openpyxl python-docx schedule pyautogui

二、常见自动化场景示例

1. 文件管理自动化

python

import os

import shutil

from pathlib import Path


# 自动整理下载文件夹

DOWNLOADS = Path.home() / "Downloads"


# 按扩展名创建目录

CATEGORIES = {

"Images": [".jpg", ".png", ".gif"],

"Documents": [".pdf", ".docx", ".txt"],

"Archives": [".zip", ".rar"]

}


for file in DOWNLOADS.iterdir():

if file.is_file():

for category, exts in CATEGORIES.items():

if file.suffix.lower() in exts:

dest = DOWNLOADS / category

dest.mkdir(exist_ok=True)

shutil.move(str(file), str(dest))

break

2. 网页数据抓取

python

import requests

from bs4 import BeautifulSoup


def get_weather(city="beijing"):

url = f"https://www.tianqi.com/{city}/"

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')


weather_info = {

"city": soup.find('dd', class_='name').h2.text,

"temp": soup.find('p', class_='now').b.text,

"status": soup.find('span', class_='text').text

}

return weather_info


print(get_weather("shanghai"))

3. Excel 报表自动化

python

from openpyxl import Workbook

from datetime import datetime


def create_report(data):

wb = Workbook()

ws = wb.active

ws.title = "销售报告"


# 添加标题行

headers = ["日期", "产品", "销售额"]

ws.append(headers)


# 填充数据

for row in data:

ws.append(row)


# 自动调整列宽

for col in ws.columns:

max_length = 0

for cell in col:

try:

if len(str(cell.value)) > max_length:

max_length = len(cell.value)

except:

pass

adjusted_width = (max_length + 2) * 1.2

ws.column_dimensions[col[0].column_letter].width = adjusted_width


filename = f"report_{datetime.now().strftime('%Y%m%d')}.xlsx"

wb.save(filename)


# 示例数据

sales_data = [

["2023-08-01", "产品A", 15000],

["2023-08-01", "产品B", 23000],

["2023-08-02", "产品A", 18000]

]

create_report(sales_data)

4. 邮件自动化

python

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

import getpass


def send_email(subject, body, to_email):

# 配置信息

email = "your_email@example.com"

password = getpass.getpass("输入邮箱密码:")


# 创建邮件

msg = MIMEMultipart()

msg['From'] = email

msg['To'] = to_email

msg['Subject'] = subject


# 添加正文

msg.attach(MIMEText(body, 'plain'))


# 发送邮件

try:

server = smtplib.SMTP('smtp.example.com', 587)

server.starttls()

server.login(email, password)

server.sendmail(email, to_email, msg.as_string())

print("邮件发送成功!")

except Exception as e:

print(f"发送失败:{str(e)}")

finally:

server.quit()


# 使用示例

send_email("每日报告", "这是自动发送的日报内容...", "recipient@example.com")

5. 桌面自动化 (GUI 操作)

python

import pyautogui

import time


def auto_screenshot(interval=5, duration=60):

"""定时截屏"""

end_time = time.time() + duration

while time.time() < end_time:

screenshot = pyautogui.screenshot()

timestamp = time.strftime("%Y%m%d_%H%M%S")

screenshot.save(f"screenshot_{timestamp}.png")

time.sleep(interval)


auto_screenshot(duration=30) # 运行30秒,每5秒截屏一次

三、高级技巧

  1. 定时任务设置

python

import schedule

import time


def job():

print("定时任务执行中...")


# 每天10:30执行

schedule.every().day.at("10:30").do(job)


while True:

schedule.run_pending()

time.sleep(60) # 每分钟检查一次

  1. 异常处理模板

python

def safe_automation():

try:

# 你的自动化代码

except FileNotFoundError as e:

print(f"文件未找到: {str(e)}")

except KeyboardInterrupt:

print("用户中断操作")

except Exception as e:

print(f"未知错误: {str(e)}")

finally:

# 清理资源

print("任务执行完毕")

四、最佳实践建议

  1. 使用配置文件存储敏感信息(API密钥、密码等)
  2. 添加详细的日志记录
  3. 编写可配置的参数(通过命令行参数或配置文件)
  4. 使用版本控制(Git)管理脚本
  5. 添加必要的异常处理
  6. 在虚拟环境中运行(使用 venv 或 conda)

五、调试技巧

  1. 使用 print() 进行简单调试
  2. 使用 logging 模块记录运行日志
  3. 使用 IDE 的调试功能(如 VSCode、PyCharm)
  4. 处理路径时使用 pathlib 代替字符串拼接
  5. 使用 type()dir() 检查对象类型和属性

这些示例覆盖了常见的自动化场景,可以根据具体需求进行组合和扩展。建议从简单任务开始,逐步增加复杂度,同时注意做好错误处理和日志记录。

相关文章

在浏览器中运行Python:PyScript入门指南

Python已成为众多数据专业人士的标准编程语言。它不仅在数据处理、机器学习模型开发及简单应用开发方面非常有用,而且应用广泛。传统上,运行Python程序通常需要在本地系统配置环境,或使用付费的云服务...

什么脚本?脚本有哪些用途?怎么运行脚本?有哪些软件可用?

1.什么是脚本(Script)?脚本是一种由解释器直接执行的代码文件,无需编译成二进制文件。它通常用于自动化任务、简化操作流程或控制软件行为。脚本语言(如 Python、JavaScript、Bash...

聊聊 Jmeter 如何并发执行 Python 脚本

来源:AirPython作者:星安果1. 前言大家好,我是安果!最近有小伙伴后台给我留言,说自己用 Django 写了一个大文件上传的 Api 接口,现在想本地检验一下接口并发的稳定性,问我有没有好的...