10 个 Python 脚本实现日常任务自动化
引言
在数字化工作环境中,重复性任务占据了大量时间。利用 Python 强大的生态系统,我们可以编写自动化脚本来处理这些繁琐的工作,从而释放精力专注于更具创造性的任务。本文将介绍 10 个实用的 Python 脚本示例,涵盖网页解析、图像处理、文件管理、系统监控等多个领域,帮助你构建高效的自动化工作流。
10 个 Python 自动化脚本,涵盖 HTML 解析、二维码扫描、截图、PDF 处理、命令行搜索、手机控制、硬件监控、社交媒体发布及视频编辑等功能。内容包含代码示例、环境配置、安全注意事项及常见问题解答,旨在帮助开发者减少重复劳动,提升工作效率。所有脚本均经过语法修正与安全性优化,可直接参考使用。

在数字化工作环境中,重复性任务占据了大量时间。利用 Python 强大的生态系统,我们可以编写自动化脚本来处理这些繁琐的工作,从而释放精力专注于更具创造性的任务。本文将介绍 10 个实用的 Python 脚本示例,涵盖网页解析、图像处理、文件管理、系统监控等多个领域,帮助你构建高效的自动化工作流。
在开始之前,请确保已安装 Python 3.6+ 环境,并根据每个脚本的需求安装相应的依赖库。建议使用虚拟环境(如 venv)来隔离项目依赖。
pip install gazpacho qrtools pyautogui Pillow PyPDF2 gTTS howdoi opencv-python pythonnet instabot moviepy
此脚本用于从指定 URL 获取网页内容并解析特定标签数据。适用于数据采集或简单的爬虫场景。
核心功能:
# Parse and Extract HTML
import gazpacho
url = 'https://www.example.com/'
headers = {'User-Agent': 'Mozilla/5.0'}
# 获取 HTML 内容
html = gazpacho.get(url, headers=headers)
print(f"Status: {html.status}")
# 解析 HTML
parse = gazpacho.Soup(html)
# 查找单个标签
h1_tag = parse.find('h1')
if h1_tag:
print(f"Title: {h1_tag.text}")
# 查找多个标签
paragraphs = parse.find_all('p')
for p in paragraphs[:3]:
print(p.text.strip())
# 按类名查找
test_div = parse.find('.class-name')
if test_div:
print(test_div.text)
注意事项:
通过编程方式批量扫描本地图片中的二维码信息,适合物流追踪或批量验证场景。
核心功能:
from qrtools import Qr
def scan_qr_image(image_path):
try:
qr = Qr()
qr.decode(image_path)
if qr.data:
return qr.data
else:
return "No data found"
except Exception as e:
return f"Error: {str(e)}"
# 使用示例
result = scan_qr_image("qr_code.png")
print(f"Decoded Content: {result}")
注意事项:
qrtools 较老,若报错可尝试 pyzbar 替代。支持全屏截图、区域截图及延时截图,适用于自动化测试或远程协助记录。
核心功能:
import time
from pyautogui import screenshot
from PIL import ImageGrab
def grab_full_screenshot(filename='full.png'):
shot = screenshot()
shot.save(filename)
print(f"Saved: {filename}")
def grab_area_screenshot(x, y, width, height, filename='area.png'):
area = (x, y, x + width, y + height)
shot = ImageGrab.grab(bbox=area)
shot.save(filename)
print(f"Area saved: {filename}")
def delayed_capture(delay_seconds=5, filename='delayed.png'):
print(f"Capturing in {delay_seconds} seconds...")
time.sleep(delay_seconds)
screenshot().save(filename)
# 调用示例
# grab_area_screenshot(0, 0, 500, 500)
将 PDF 文档中的文本提取并转换为语音文件,方便阅读长文档时听书。
核心功能:
from PyPDF2 import PdfReader
from gtts import gTTS
import os
def pdf_to_audio(pdf_path, output_dir='./audio'):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
reader = PdfReader(pdf_path)
for i, page in enumerate(reader.pages):
text = page.extract_text()
if text:
tts = gTTS(text=text, lang='en')
filename = os.path.join(output_dir, f'page_{i}.mp3')
tts.save(filename)
print(f"Generated: {filename}")
# 使用:pdf_to_audio('book.pdf')
注意事项:
提供合并、删除、旋转等常用 PDF 操作功能,无需打开大型软件即可快速处理文件。
核心功能:
from PyPDF2 import PdfReader, PdfWriter
def merge_pdfs(input_files, output_file):
writer = PdfWriter()
for file in input_files:
reader = PdfReader(file)
for page in reader.pages:
writer.add_page(page)
with open(output_file, 'wb') as f:
writer.write(f)
print(f"Merged to {output_file}")
def remove_pages(input_file, pages_to_remove, output_file):
reader = PdfReader(input_file)
writer = PdfWriter()
total_pages = len(reader.pages)
for i in range(total_pages):
if i not in pages_to_remove:
writer.add_page(reader.pages[i])
with open(output_file, 'wb') as f:
writer.write(f)
# 使用示例
# merge_pdfs(['a.pdf', 'b.pdf'], 'merged.pdf')
利用 Howdoi 模块在终端直接查询编程问题解决方案,提高开发效率。
使用方法: 这不是 Python 脚本,而是 CLI 工具。安装后直接在终端运行。
# 安装
pip install howdoi
# 查询示例
howdoi install python3
howdoi selenium enter keys
howdoi parse html with python
howdoi sort list in python
优势:
通过 ADB (Android Debug Bridge) 控制手机执行手势、点击、拨号等操作。
前提条件:
import subprocess
def run_adb_command(cmd):
try:
result = subprocess.run(cmd.split(), capture_output=True, text=True)
return result.stdout
except Exception as e:
return str(e)
def swipe_screen(x1, y1, x2, y2, duration=500):
cmd = f"adb shell input swipe {x1} {y1} {x2} {y2} {duration}"
return run_adb_command(cmd)
def tap_screen(x, y):
cmd = f"adb shell input tap {x} {y}"
return run_adb_command(cmd)
def send_sms(number, message):
cmd = f"adb shell am start -a android.intent.action.SENDTO -d sms:{number} --es sms_body \"{message}\""
return run_adb_command(cmd)
# 注意:实际使用前需连接设备 adb devices
安全警告:
实时读取硬件传感器数据,防止过热降频。
核心功能:
import clr
clr.AddReference("OpenHardwareMonitorLib")
from OpenHardwareMonitorLib.Hardware import Computer, HardwareType, SensorType
spec = Computer()
spec.CPUEnabled = True
spec.GPUEnabled = True
spec.Open()
def get_cpu_temp():
temps = []
for hardware in spec.Hardware:
if hardware.HardwareType == HardwareType.Cpu:
for sensor in hardware.Sensors:
if sensor.SensorType == SensorType.Temperature and sensor.Value is not None:
temps.append(sensor.Value)
return sum(temps) / len(temps) if temps else 0
def get_gpu_temp():
temps = []
for hardware in spec.Hardware:
if hardware.HardwareType == HardwareType.GpuNvidia or hardware.HardwareType == HardwareType.GpuAti:
for sensor in hardware.Sensors:
if sensor.SensorType == SensorType.Temperature and sensor.Value is not None:
temps.append(sensor.Value)
return sum(temps) / len(temps) if temps else 0
# 建议配合阈值报警逻辑使用
自动化上传图片或视频到社交媒体平台。
安全提示:
from instabot import Bot
import os
def upload_media(media_path, caption="", media_type="photo"):
bot = Bot()
# 建议从环境变量读取凭据
username = os.getenv("INSTA_USER")
password = os.getenv("INSTA_PASS")
if not username or not password:
raise ValueError("Please set INSTA_USER and INSTA_PASS env vars")
bot.login(username=username, password=password)
if media_type == "photo":
bot.upload_photo(media_path, caption=caption)
elif media_type == "video":
bot.upload_video(media_path, caption=caption)
print(f"Uploaded {media_path}")
# 使用:upload_media("img.jpg", "Hello World")
为视频批量添加文字水印,保护版权或增加品牌曝光。
核心功能:
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
def add_watermark(video_path, output_path, text="WaterMark"):
clip = VideoFileClip(video_path)
w, h = clip.size
txt_clip = TextClip(text, font='Arial', color='white', fontsize=24)
txt_clip = txt_clip.set_duration(clip.duration).set_pos(('center', 'bottom')).set_opacity(0.8)
final = CompositeVideoClip([clip, txt_clip])
final.write_videofile(output_path, fps=clip.fps)
print(f"Processed: {output_path}")
# 使用:add_watermark("input.mp4", "output.mp4")
Q: 为什么某些脚本运行报错?
A: 检查 Python 版本是否兼容,确认依赖库是否安装正确 (pip list),以及是否有管理员权限(特别是涉及系统监控时)。
Q: 如何批量处理文件?
A: 结合 os.walk 或 glob 模块遍历目录,将上述函数封装进循环中即可。
Q: 脚本运行太慢怎么办?
A: 对于 IO 密集型任务,考虑使用多线程 (threading) 或异步 (asyncio) 优化;对于计算密集型任务,考虑使用 C 扩展或并行计算。
以上 10 个脚本展示了 Python 在日常办公和技术运维中的强大能力。通过组合这些基础模块,你可以构建更复杂的自动化系统。建议在实际使用前先在测试环境中充分验证,确保逻辑无误后再应用于生产流程。持续学习新的库和框架,将进一步提升你的自动化水平。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online