
有些活写进需求里叫“功能”,没写进需求里就叫“手工操作”。
批量改文件名、扫日志、清目录、对 Excel、测接口、备份文件……单看一个都不难,烦的是它隔三差五就来一次。手动干十分钟也能干,但这种十分钟我一般不想给。
Python 特别适合收拾这些零碎活。代码不用写得多漂亮,能稳定替你干活就行。
1、批量整理下载目录
下载目录最容易变垃圾场。PDF、图片、压缩包全堆一起,我一般直接按后缀归档。
from pathlib import Path
root = Path.home() / "Downloads"
for f in root.iterdir():
if not f.is_file():
continue
ext = f.suffix.lower().replace(".", "") or "other"
target = root / ext
target.mkdir(exist_ok=True)
f.rename(target / f.name)
这种脚本别上来就 os.system("mv ..."),文件名里碰上空格、特殊字符,又得给自己找事。
2、批量重命名文件
测试导出来几百张图片,名字全是 IMG_20260817_xxx,人工改我是不可能改的。
from pathlib import Path
folder = Path("./screenshots")
for no, f in enumerate(sorted(folder.glob("*.png")), 1):
new_name = folder / f"bug_case_{no:03d}.png"
f.rename(new_name)
真要跑生产文件,建议先把 rename 改成 print,确认一遍结果。批处理脚本最怕的不是报错,是没报错但改错了。
3、从日志里捞 ERROR
几十 MB 的日志别用编辑器硬开,我通常先把异常行单独切出来。
from pathlib import Path
src = Path("service.log")
dst = Path("error_only.log")
with src.open(encoding="utf-8", errors="ignore") as r, \
dst.open("w", encoding="utf-8") as w:
for line in r:
if "ERROR" in line or "Traceback" in line:
w.write(line)
如果线上已经有 ELK、Loki,这脚本意义不大。但临时拿到一份离线日志时,非常顺手。
4、批量检查 URL 是否挂了
文档里几十个接口地址,逐个点开检查很蠢。
import requests
urls = [
"https://example.com/health",
"https://api.example.com/ping",
]
for url in urls:
try:
resp = requests.get(url, timeout=3)
print(resp.status_code, url)
except requests.RequestException as e:
print("FAIL", url, type(e).__name__)
这里一定要加 timeout。不加超时的巡检脚本,我第一眼就不太信,它自己都有可能巡检到卡死。
5、自动备份配置文件
改 Nginx、Docker Compose、应用配置之前,我喜欢先留一份带时间戳的备份。
from datetime import datetime
from pathlib import Path
import shutil
src = Path("/etc/nginx/nginx.conf")
stamp = datetime.now().strftime("%Y%m%d_%H%M%S")
dst = Path("/data/backup") / f"nginx_{stamp}.conf"
dst.parent.mkdir(parents=True, exist_ok=True)
shutil.copy2(src, dst)
出了问题能不能快速回滚,比你当时改配置有多自信重要得多。
6、清理过期临时文件
服务器磁盘慢慢涨,很多时候不是业务数据,就是没人管的临时文件。
import time
from pathlib import Path
expire = time.time() - 7 * 86400
for f in Path("/data/tmp").glob("*.tmp"):
if f.is_file() and f.stat().st_mtime < expire:
f.unlink()
删除类脚本我会把目录写死,不接受随便传一个路径进来。自动化可以省事,权限给太大就是事故制造机。
7、CSV 按条件拆文件
运营丢过来一个大 CSV,只要失败记录,没必要人工筛。
import csv
with open("result.csv", encoding="utf-8") as r, \
open("failed.csv", "w", newline="", encoding="utf-8") as w:
rows = csv.DictReader(r)
out = csv.DictWriter(w, fieldnames=rows.fieldnames)
out.writeheader()
for row in rows:
if row["status"] != "success":
out.writerow(row)
这种一次性的字段清洗任务,Python 比开 Excel 点半天稳得多。
8、批量检查文件 MD5
发包、迁移文件时,我不太喜欢靠“文件大小一样”判断有没有传坏。
import hashlib
from pathlib import Path
def md5(path):
h = hashlib.md5()
with Path(path).open("rb") as f:
while chunk := f.read(1024 * 1024):
h.update(chunk)
return h.hexdigest()
print(md5("release.zip"))
大文件按块读,别一把 read() 全塞内存。这种细节平时没感觉,碰到几个 GB 的包马上教做人。
9、定时检查磁盘空间
磁盘满这种故障很烦,因为前面通常一点声音没有。
import shutil
total, used, free = shutil.disk_usage("/")
used_rate = used / total * 100
if used_rate > 85:
print(f"磁盘告警: {used_rate:.1f}%")
实际使用时把 print 换成企业微信、钉钉或者邮件通知,再丢到 cron 里跑就够了。
10、找出两个目录缺了哪些文件
迁移附件、备份图片之后,我一般都会再做一次文件名对账。
from pathlib import Path
old = {f.name for f in Path("./source").rglob("*") if f.is_file()}
new = {f.name for f in Path("./target").rglob("*") if f.is_file()}
for name in sorted(old - new):
print("缺失:", name)
真要严格一点,再加文件大小和 MD5,别只比较文件名。
我现在写这种脚本有个习惯:一次只解决一个麻烦。
别一开始就整配置中心、线程池、Web 页面、任务调度,最后一个 20 行能解决的问题,被自己写成了一个“小平台”。
能跑,能看懂,出错时知道它干到哪一步,再配个 cron。
这种 Python 脚本才是真的省时间。
以上就是“10 个 Python 脚本,把每天那些破事自动干掉!”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/14484/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料