
如果你已经有一定的Python使用经验,或许已经掌握了循环、包管理等基础操作,现在想尝试一些超出简单练习范畴的实战项目,那么这里有几个不错的想法。这些项目简单直接、实用性强,且不会花费过多时间。
大多数项目一个下午左右就能完成。下面我们就来具体看看这些项目。
以下是10个小型项目,它们有趣、实用,还能让你小露一手。每个项目都适合在周末完成(大多数不到1小时就能搞定)。
准备好了吗?让我们把Python变成你的得力助手吧。
为什么需要它?因为手动记录支出只会让人身心俱疲。这个脚本可以登录你的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]])
这个项目能让记日记变得毫不费力。你无需打字,只需说出自己的想法,应用就会自动记录你的心情、工作效率和笔记。快速的语音输入、心情追踪和每日总结功能,能帮你轻松养成记日记的习惯,无需花费时间逐字书写。
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()
每周还可以生成简单的图表,查看自己的心情变化趋势。
谁也不想凌晨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适配器名称)。
谁的桌面还没有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))