10 个自动化日常任务的 Python 脚本
昨天晚上十一点多,在公司楼下撸串儿,我正啃着羊肉串,我们组那个小李跑过来跟我吐槽: “哥,我每天一上班先花半小时删日志、改文件名、拷贝备份,感觉自己像个高配版文件管理器…”
我说你这不是不会算法,你这是不会用 Python,当场就给他拎了 10 个我平时真在用的小脚本出来,他记得一愣一愣的,你要不也一起看下?代码都不长,能直接改成你自己的。
先说第一个,自动整理下载/桌面,这个真是救命的。脚本每天把常见类型的文件丢到对应文件夹里。
import os, shutil
from pathlib import Pathbase = Path(r"C:\Users\me\Downloads") # 换成你自己的
rules = {
"图片": [".png", ".jpg", ".jpeg"],
"文档": [".pdf", ".docx", ".txt"],
"压缩包": [".zip", ".rar", ".7z"],
}
for file in base.iterdir():
ifnot 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
第二个是批量重命名,加上日期前缀。比如把一堆截图变成 2024-01-01_xxx.png,人一看就知道哪天的。
import os, datetimefolder = r"C:\Users\me\Pictures"
today = datetime.date.today().isoformat()
for name in os.listdir(folder):
old = os.path.join(folder, name)
ifnot os.path.isfile(old):
continue
new_name = f"{today}_{name}"
new = os.path.join(folder, new_name)
os.rename(old, new)
第三个,清理 N 天前的日志文件。这个是我在服务器上必备,不然磁盘总有一天把你干翻。
import os, time
from pathlib import Pathlog_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()
第四个,每天打一个压缩备份包,比如把你的工作文档整个打成 zip,挂个 crontab 就行。
import zipfile, datetime
from pathlib import Pathsrc = 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))
第五个,合并一堆 CSV,比如每天导出的报表,全怼成一个文件方便分析。这个不用第三方库也能搞。
import csv, globfiles = 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 andnot header_written:
writer = csv.writer(fout)
writer.writerow(header)
header_written = True
for row in reader:
writer.writerow(row)
第六个就有点“自动化助理”的味道了,简单发个提醒邮件。比如每天 18:00 给自己发一句“记得写日报”。邮箱配置要自己改下。
import smtplib
from email.mime.text import MIMETextsmtp_host = "smtp.xxx.com"
user = "[email protected]"
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)
第七个其实挺实用,在一堆文件里搜关键字生成一个小报告,比如搜项目里哪里还写着“TODO”。
from pathlib import Pathroot = 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")
第八个算是网站存活监控的极简版,我以前拿这个盯测试环境。
import requests, timeurls = ["https://www.baidu.com", "https://www.xxx.com/health"]
whileTrue:
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)
第九个是学生党也爱用的,一键改图片名 + 移到 PPT 资料夹,其实就是前面那俩脚本的组合,你可以自己拼,这里给个小版本:
import os, shutilsrc = 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):
ifnot 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)
第十个,我自己挺常用,简单记一记今天都干了啥,每次运行往日记文件里加一行,配合快捷方式点一下就写一条。
from pathlib import Path
import datetimelog = 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")
大概就这十个,都是那种你今天就能跑起来、明天就能省时间的东西。你可以先挑两三个自己最烦的重复活,改下路径和参数跑起来,再高级点就给它们挂到定时任务里,或者写个简单 GUI。
行了我先不啰嗦了,手机又在提醒我喝水了,这个提醒脚本我下次再跟你唠。
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB