news 2026/10/31 6:56:17

程序员效率神器:10个拿来即用的Python自动化脚本,解放你的双手

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
程序员效率神器:10个拿来即用的Python自动化脚本,解放你的双手

你是不是也同样感到了厌倦, 因为每天上班的时候, 都会被各式各样的机械而且重复的文件操作给缠住? 有没有觉得自己更像是一个高级的文件搬运工, 而不是一个能够解决问题的工程师呢?

实际上, 很多那些枯燥的日常任务, 只需要用上几行简单的脚本就可以轻松地把它们搞定好, 这样的话就能把时间还给真正重要的事情上去。

下面我要分享 10 个确实是在实际使用中, 经常会被拿来使用的小型脚本, 每一个小型脚本的目标都非常明确, 那就是为了解决某一个非常具体的、让人头疼的问题点。

这些代码的设计既简单又清晰, 非常容易理解, 对于用户来说, 唯一需要做的操作是非常少的, 只需要去修改其中的几个地址路径, 或者调整一下相关的参数设定, 随后就可以立刻将这些工具投入运行并使用起来了。

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-.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 =

user =

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. 对于简易的网站建设, 进行存活状况监控。

请问你须不需要对测试环境里的状况, 或者对若干关键服务的健康状态, 展开监控工作? 这个极其简易版本的监控脚本, 它会以一定的时间间隔, 去访问那个包含了指定网址内容的列表, 并且将所检测到的状态码信息, 或者是出现的异常情况提示内容, 直接打印在屏幕上展示给用户看。

import requests, time

urls =

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图片素材

在准备演示文稿的时候呢, 由于从各个地方收集来的图片素材它们的命名非常混乱, 所以这个脚本的作用就是自动地把那些存在于桌面上的图片文件全都移动到已经被指定好的文件夹里面去, 并且还要按照一定的顺序来进行重命名操作, 比如说把文件名改成带有 .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 个其实用的小脚本。它们的目标非常明确, 那就是帮你把那些琐碎、重复且容易出错的手工操作给自动化掉。你完全可以从最让你困扰的那个实际任务开始做起, 先把代码复制下来, 再把路径修改为实际需要使用的路径, 随后试运行一下效果。

更进一步的改进方式, 则是把它们加入到任务计划或者 Linux 系统的 cron 调度工具里, 这样就可以实现真正意义上的全自动执行了。

你要是对这些用来提高办事效率的小办法感兴趣的话, 又或者想要知道怎样把几个单独的脚本连在一起做成更厉害的一整套工具的话, 就请到云栈社区里面去和别的那些写代码的人一块儿交流一下各自的心得体会。

你要晓得, 真正好用的家伙事儿, 并不是看它有多复杂, 而是要看它能不能真的把你的干活的速度给放开, 让你自己不那么累, 这才是关键的地方。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/31 6:53:36

GTK4 帧率显示

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/31 6:53:15

DLSS Swapper:不更新游戏,直接替换游戏里的 DLSS dll

DLSS Swapper&#xff1a;不更新游戏&#xff0c;直接替换游戏里的 DLSS dll 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 新版 DLSS 想用在老游戏上&#xff0c;一般只能等厂商发更新。DLSS Swapper 的思路是绕过更…

作者头像 李华
网站建设 2026/10/31 6:48:22

markitdown 完整教程:一条命令把 PDF、Word、EPUB 转成 Markdown

markitdown 完整教程&#xff1a;一条命令把 PDF、Word、EPUB 转成 Markdown 【免费下载链接】markitdown Python tool for converting files and office documents to Markdown. 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown markitdown 是微软开源的…

作者头像 李华
网站建设 2026/10/31 6:47:56

Python生成器send与next方法解析

阐述生成器里头send()以及next()方法的运用诀窍, 深度剖析二者区别还有实际运用情形。1、 有一种基础实现方式即为处于异步IO编程里的生成器。生成器会提供出两个核心方法, 分别是send和next, 它们于控制生成器执行流程这个方面起着关键方面。当调用生成器之际, 开始使用next方…

作者头像 李华