热门脚本大家都会写,真正拉开差距的往往是那些「冷门但正好解决痛点」的小工具。这一篇再给你 8 个没在前九篇出现过的方向:扫码识别、屏幕录制、文件校验、文本查重、PDF 处理、剪贴板操控、本地数据库、视频提音。它们有的零依赖,有的只需一个常见库,复制回去就能用。
1. 二维码识别解码(手机扫出来的码也能读)
前面写过生成二维码,这一节反过来——识别并读取一张图片里的二维码内容,常用于批量核销、自动录入场景。
(需 pip install opencv-python)
import cv2
defdecode_qr(image_path):
img = cv2.imread(image_path)
detector = cv2.QRCodeDetector()
data, pts, _ = detector.detectAndDecode(img)
if data:
print("识别结果:", data)
else:
print("未检测到二维码")
# decode_qr("qrcode.png")
小提示:detectAndDecode 一步完成定位和解码;要批量识别,把函数放进遍历图片文件夹的循环即可。若图片模糊或角度倾斜,识别率会下降,尽量用清晰正对的图。
2. 屏幕操作录制(把操作步骤存成视频)
做教程、记录操作流程时,用代码把屏幕变化录成 mp4,比外接录屏软件更轻量、可自动化。
(需 pip install opencv-python pillow)
import cv2
import numpy as np
from PIL import ImageGrab
defrecord(seconds=10, fps=10, out="record.mp4"):
screen = ImageGrab.grab()
w, h = screen.size
fourcc = cv2.VideoWriter_fourcc(*"mp4v")
video = cv2.VideoWriter(out, fourcc, fps, (w, h))
for _ in range(int(seconds * fps)):
frame = np.array(ImageGrab.grab())
video.write(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
video.release()
print("录制完成:", out)
# record(seconds=10)
小提示:seconds 控制录制时长,fps 越高越流畅但文件越大;录全屏分辨率下生成的视频体积不小,可按需降低帧率。
3. 文件哈希校验(确认文件没被改动)
下载的安装包、传输后的资料,怎么确认和原文件一致?算一个哈希值比对即可,标准库就能做,不依赖任何第三方包。
(Python 标准库,无需安装)
import hashlib
deffile_hash(path, algo="sha256"):
h = hashlib.new(algo)
with open(path, "rb") as f:
for chunk in iter(lambda: f.read(8192), b""):
h.update(chunk)
return h.hexdigest()
# print(file_hash("data.zip"))
小提示:sha256 适合做完整性校验;比对两个文件的哈希值,若完全一致则说明内容相同,可用来快速判断备份是否准确。
4. 文本相似度比对(简易查重)
两句话是不是同一个意思?两份文案有多像?用 difflib 算一个 0 到 1 的相似度,做轻量查重或去重足够用。
(Python 标准库,无需安装)
from difflib import SequenceMatcher
defsimilarity(a, b):
return SequenceMatcher(None, a, b).ratio()
# print(round(similarity("今天天气不错", "今日天气挺好"), 2))
小提示:返回值越接近 1 越相似;阈值可按场景设定,例如大于 0.8 判为高度重复。它衡量的是字符层面相似,不是语义相似。
5. PDF 拆分与加密(按需提取、随手加锁)
前面处理过 PDF 的合并、文字提取、转图片,这一节补齐拆分和加密:把指定几页单独拎出来,或给整份文件加个打开密码。
(需 pip install pypdf)
from pypdf import PdfReader, PdfWriter
defsplit_pdf(src, pages, out):
reader = PdfReader(src)
writer = PdfWriter()
for p in pages:
writer.add_page(reader.pages[p])
with open(out, "wb") as f:
writer.write(f)
print("已拆分:", out)
defencrypt_pdf(src, out, pwd):
reader = PdfReader(src)
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
writer.encrypt(pwd)
with open(out, "wb") as f:
writer.write(f)
print("已加密:", out)
# split_pdf("book.pdf", [0, 1, 2], "part.pdf")
# encrypt_pdf("book.pdf", "book_locked.pdf", "123456")
小提示:页码从 0 开始计数;加密后请妥善保管密码,遗忘将无法打开。拆分适合把长篇文档按章节分发。
6. 剪贴板自动读写(让复制粘贴听你指挥)
需要在多个窗口之间批量搬运文本?用脚本直接读写系统剪贴板,配合循环就能实现自动化搬运,比手动复制快得多。
(需 pip install pyperclip)
import pyperclip
defcopy(text):
pyperclip.copy(text)
print("已复制到剪贴板")
defpaste():
return pyperclip.paste()
# copy("Hello Python")
# print(paste())
小提示:pyperclip 在 Windows、Linux、macOS 下通用;可把 copy 放进循环,依次把多段内容送进剪贴板再手动粘贴到目标位置。
7. 本地数据库增删改查(告别散落的 txt)
数据稍微多一点,手写文本文件就容易乱。用 sqlite3 建一个本地数据库,几行就能完成建表、插入、查询,数据规整又好维护。
(Python 标准库,无需安装)
import sqlite3
defdemo():
conn = sqlite3.connect("demo.db")
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS items (id INTEGER PRIMARY KEY, name TEXT)")
c.execute("INSERT INTO items (name) VALUES (?)", ("键盘",))
conn.commit()
for row in c.execute("SELECT * FROM items"):
print(row)
conn.close()
# demo()
小提示:数据保存在本地文件 demo.db;适合做轻量本地存储,替代手工维护的 txt 或 csv;多表关联、条件查询都支持。
8. 视频提取音频(把声音单独存下来)
一段讲座视频、一个带解说的短片,只想保留声音反复听?用 moviepy 把音轨抽出来存成 mp3,几分钟的事。
(需 pip install moviepy)
from moviepy import VideoFileClip
defextract_audio(video_path, out="audio.mp3"):
clip = VideoFileClip(video_path)
clip.audio.write_audiofile(out)
clip.close()
print("音频已提取:", out)
# extract_audio("clip.mp4")
小提示:底层依赖 ffmpeg;与前面用 pydub 做音频格式互转互为补充——一个管「视频抽音」,一个管「音频转格式」。大视频建议先剪短再提取。
这 8 个脚本分布在图像识别、屏幕录制、安全校验、文本处理、文档操作、系统交互、数据存储、音视频八个领域,和前九篇的选题没有重叠。它们共同的特点是「小而专」——不一定天天用,但用到那一次就能省下大把时间。建议先挑一两个跑通,再慢慢把这套冷门工具收进自己的工具箱。