你是不是也厌倦了每天上班就被各种机械重复的文件操作缠住?感觉自己像个高级文件搬运工,而不是解决问题的工程师?其实,很多枯燥的日常任务,用几行简单的 Python 脚本就能轻松搞定,把时间还给真正重要的事情。
下面分享 10 个我实际在用的 Python 小脚本,每个都瞄准一个具体的痛点。代码简洁明了,你只需要修改几处路径或参数,马上就能用起来。
1. 自动整理下载/桌面文件
每天面对杂乱无章的下载文件夹或桌面,找个文件都费劲。这个脚本可以按文件类型自动归类,比如把图片、文档、压缩包分别放到对应的子文件夹里。
import os, shutil
from pathlib import Path
base = Path(r"C:\Users\me\Downloads") # 换成你自己的
rules = {
"图片": [".png", ".jpg", ".jpeg"],
"文档": [".pdf", ".docx", ".txt"],
"压缩包": [".zip", ".rar", ".7z"],
}
for file in base.iterdir():
if not file.is_file():
continue
for folder, exts in rules.items():
if file.suffix.lower() in exts:
target_dir = base / folder
target_dir.mkdir(exist_ok=True)
shutil.move(str(file), target_dir / file.name)
break
2. 批量重命名文件,统一添加日期前缀
处理大量截图或临时文件时,一个清晰的命名规则至关重要。这个脚本给指定文件夹内的所有文件加上当天日期作为前缀,例如 2024-01-01_xxx.png。
import os, datetime
folder = r"C:\Users\me\Pictures"
today = datetime.date.today().isoformat()
for name in os.listdir(folder):
old = os.path.join(folder, name)
if not os.path.isfile(old):
continue
new_name = f"{today}_{name}"
new = os.path.join(folder, new_name)
os.rename(old, new)
3. 自动清理N天前的旧日志文件
服务器上的应用日志如果不定期清理,很快就会占满磁盘。这个脚本帮你删除指定目录下超过指定天数(比如7天)的 .log 文件。
import os, time
from pathlib import Path
log_dir = Path("/var/log/myapp")
days = 7
expire = time.time() - days * 24 * 3600
for f in log_dir.glob("*.log"):
if f.stat().st_mtime < expire:
print("删除", f)
f.unlink()
4. 每日自动备份重要目录到压缩包
对于工作文档、项目源码等关键数据,定期备份是必须的。这个脚本将指定目录压缩成一个以当天日期命名的ZIP包,方便归档。
import zipfile, datetime
from pathlib import Path
src = Path(r"D:\work_docs")
backup_dir = Path(r"D:\backup")
backup_dir.mkdir(exist_ok=True)
name = datetime.date.today().isoformat() + ".zip"
zip_path = backup_dir / name
with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zf:
for p in src.rglob("*"):
if p.is_file():
zf.write(p, p.relative_to(src))
5. 合并多个CSV文件
数据分析时,常常需要把每天或每周导出的多个CSV报表合并成一个文件。这个脚本无需第三方库,高效完成合并任务。
import csv, glob
files = glob.glob(r"D:\reports\2024-01-*.csv")
out = r"D:\reports\all_2024-01.csv"
header_written = False
with open(out, "w", newline="", encoding="utf-8") as fout:
writer = None
for f in files:
with open(f, newline="", encoding="utf-8") as fin:
reader = csv.reader(fin)
header = next(reader, None)
if header and not header_written:
writer = csv.writer(fout)
writer.writerow(header)
header_written = True
for row in reader:
writer.writerow(row)
6. 定时发送简易邮件提醒
给自己设定一些工作提醒,比如下班前写日报、每周周会等。这个脚本利用SMTP协议发送邮件,可以结合系统定时任务使用。
import smtplib
from email.mime.text import MIMEText
smtp_host = "smtp.xxx.com"
user = "you@xxx.com"
password = "你的授权码"
msg = MIMEText("下班前记得写日报!", "plain", "utf-8")
msg["Subject"] = "小提醒"
msg["From"] = user
msg["To"] = user
with smtplib.SMTP_SSL(smtp_host, 465) as s:
s.login(user, password)
s.send_message(msg)
7. 搜索项目代码中的特定关键字并生成报告
想在代码库中快速找出所有 TODO、FIXME 注释或者某个特定函数调用?这个脚本遍历所有 .py 文件,生成一个包含文件、行号和内容的简明报告。
from pathlib import Path
root = Path(r"D:\code\my_project")
keyword = "TODO"
result = []
for p in root.rglob("*.py"):
for i, line in enumerate(p.read_text(encoding="utf-8", errors="ignore").splitlines(), start=1):
if keyword in line:
result.append(f"{p}:{i}: {line.strip()}")
report = "\n".join(result)
Path("todo_report.txt").write_text(report, encoding="utf-8")
8. 简易网站存活监控
需要监控测试环境或几个关键服务的健康状态?这个极简版的监控脚本会定期访问指定URL列表,并打印出状态码或异常信息。
import requests, time
urls = ["https://www.baidu.com", "https://www.xxx.com/health"]
while True:
for url in urls:
try:
r = requests.get(url, timeout=3)
print(time.strftime("%H:%M:%S"), url, r.status_code)
except Exception as e:
print(time.strftime("%H:%M:%S"), url, "DOWN", e)
time.sleep(60)
9. 一键处理并命名PPT图片素材
准备演示文稿时,从各处收集的图片素材命名混乱。这个脚本将桌面上的图片文件自动移动到指定文件夹,并按顺序重命名为 slide_001.png 这样的格式。
import os, shutil
src = r"C:\Users\me\Desktop"
dst = r"C:\Users\me\Desktop\ppt_imgs"
os.makedirs(dst, exist_ok=True)
for i, name in enumerate(os.listdir(src), start=1):
if not name.lower().endswith((".png", ".jpg", ".jpeg")):
continue
old = os.path.join(src, name)
new = os.path.join(dst, f"slide_{i:03d}.png")
shutil.move(old, new)
10. 快速记录工作日志
好记性不如烂笔头。这个脚本通过命令行交互,让你快速记录下当前完成的工作或想法,并自动附上时间戳,保存到日志文件中。
from pathlib import Path
import datetime
log = Path(r"D:\life\work_log.txt")
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
text = input("今天干了啥?:")
log.parent.mkdir(parents=True, exist_ok=True)
with log.open("a", encoding="utf-8") as f:
f.write(f"[{now}] {text}\n")
以上就是 10 个实用小脚本。它们的目标很明确:帮你自动化那些琐碎、重复且容易出错的手工操作。你可以从最困扰你的那个任务开始,复制代码、修改路径、试运行一下。更进一步,可以把它们加入到 Windows 任务计划或 Linux 的 crontab 里,实现真正的全自动。
如果你对这类提升效率的 Python 技巧感兴趣,或者想了解如何将这些脚本组合成更强大的工具链,欢迎在 云栈社区 与更多开发者交流心得。记住,好的工具不在于有多复杂,而在于它是否真正解放了你的生产力。