第127期 10个你可能不知道自己需要的Python自动化项目

如果你已经有一定的Python使用经验,或许已经掌握了循环、包管理等基础操作,现在想尝试一些超出简单练习范畴的实战项目,那么这里有几个不错的想法。这些项目简单直接、实用性强,且不会花费过多时间。

大多数项目一个下午左右就能完成。下面我们就来具体看看这些项目。

以下是10个小型项目,它们有趣、实用,还能让你小露一手。每个项目都适合在周末完成(大多数不到1小时就能搞定)。

准备好了吗?让我们把Python变成你的得力助手吧。

1. 读取银行邮件的个人财务追踪器

为什么需要它?因为手动记录支出只会让人身心俱疲。这个脚本可以登录你的Gmail邮箱,抓取未读的交易邮件,并将交易信息记录到Google表格中。

import imaplib, email, re
import gspread
from oauth2client.service_account import ServiceAccountCredentials
mail = imaplib.IMAP4_SSL("imap.gmail.com")
mail.login("[email protected]", "yourpassword")  # 此处替换为你的邮箱和密码mail.select("inbox")  # 选择收件箱_, data = mail.search(None, '(UNSEEN SUBJECT "transaction")')  # 搜索未读且主题含"transaction"的邮件# 配置Google表格连接scope = ["<https://spreadsheets.google.com/feeds>"]
creds = ServiceAccountCredentials.from_json_keyfile_name("creds.json", scope)  # 需提前准备密钥文件client = gspread.authorize(creds)
sheet = client.open("Expenses").sheet1  # 打开名为"Expenses"的表格# 处理每封符合条件的邮件for num in data[0].split():
    _, msg_data = mail.fetch(num, '(RFC822)')
    msg = email.message_from_bytes(msg_data[0][1])
    body = msg.get_payload(decode=True).decode()  # 提取邮件正文    # 正则匹配印度卢比(INR)金额    match = re.search(r'INR\\s?([\\d,]+\\.?\\d*)', body)
    if match:
        amount = match.group(1)
        # 将邮件日期、金额、正文前50字符写入表格        sheet.append_row([msg["date"], amount, body[:50]])

2. 带语音笔记的每日心情与 productivity 记录器

这个项目能让记日记变得毫不费力。你无需打字,只需说出自己的想法,应用就会自动记录你的心情、工作效率和笔记。快速的语音输入、心情追踪和每日总结功能,能帮你轻松养成记日记的习惯,无需花费时间逐字书写。

import speech_recognition as sr
import pandas as pd
from textblob import TextBlob  # 用于情感分析from datetime import datetime
def log_mood():
    r = sr.Recognizer()  # 初始化语音识别器    with sr.Microphone() as source:
        print("说说你的心情吧...")
        audio = r.listen(source)  # 监听麦克风输入    # 将语音转换为文本    text = r.recognize_google(audio)
    # 分析文本情感极性(数值范围:-1到1,负值表示负面,正值表示正面)    polarity = TextBlob(text).sentiment.polarity
    # 创建DataFrame存储记录    df = pd.DataFrame([[datetime.now(), text, polarity]],
                      columns=["时间", "记录内容", "情感极性"])
    # 将记录追加到CSV文件(无表头,不保留索引)    df.to_csv("mood_log.csv", mode="a", header=False, index=False)
    print("已记录:", text)
# 调用函数执行记录log_mood()

每周还可以生成简单的图表,查看自己的心情变化趋势。

3. Wi-Fi自动修复器

谁也不想凌晨2点还要手动重启路由器吧?这可不该成为一种“习惯”。

import subprocess, time, requests  # subprocess用于执行系统命令,requests用于检测网络连接def internet_ok():
    try:
        # 尝试访问Google,超时时间设为5秒        requests.get("<https://www.google.com>", timeout=5)
        return True  # 能访问则表示网络正常    except:
        return False  # 访问失败则表示网络异常# 循环检测网络状态while True:
    if not internet_ok():
        print("Wi-Fi已断开,正在重启...")
        # 关闭Wi-Fi("en0"为Wi-Fi适配器名称,需根据实际情况替换)        subprocess.run(["networksetup", "-setairportpower", "en0", "off"])
        time.sleep(3)  # 等待3秒        # 重新开启Wi-Fi        subprocess.run(["networksetup", "-setairportpower", "en0", "on"])
    time.sleep(60)  # 每60秒检测一次网络状态

(请将代码中的“en0”替换为你的Wi-Fi适配器名称)。

4. 桌面自动清理器

谁的桌面还没有137个名为“截图(92).png”的文件呢?这可算不上什么文件管理方式。

import os, shutil, datetime  # os用于文件操作,shutil用于移动文件# 获取当前用户的桌面路径desktop = os.path.expanduser("~/Desktop")
# 遍历桌面上的所有文件for file in os.listdir(desktop):
    path = os.path.join(desktop, file)  # 拼接完整文件路径    if os.path.isfile(path):  # 仅处理文件(不处理文件夹)        # 获取文件扩展名并转为小写        ext = os.path.splitext(file)[1].lower()
        # 根据扩展名分类:图片(.png/.jpg)或文档(其他格式)        category = "Images" if ext in [".png", ".jpg"] else "Docs"        # 拼接分类文件夹路径        folder = os.path.join(desktop, category)
        # 若文件夹不存在则创建(exist_ok=True避免报错)        os.makedirs(folder, exist_ok=True)
        # 将文件移动到对应分类文件夹        shutil.move(path, os.path.join(folder, file))