
我使用Python不是为了“节省时间”。
我使用Python来消除生活中一整类的烦恼。
在每天编写Python代码4年多之后——专业地、痴迷地——你开始注意到一些有趣的事情:最大的生产力提升并非来自华丽的框架。
它们来自于那些安静地坐在后台并……起作用的静默脚本。
以下是我个人依赖的8个Python工具,它们让我全天保持敏锐、专注且出奇高效。
没有华而不实的东西。没有初学者玩具。没有rich,没有仪表盘,没有虚假的复杂性。
让我们开始。
1. 一个“消除上下文切换杀手”,锁定我的注意力
上下文切换才是真正的生产力杀手——而不是技能不足。
每一个Slack提示、浏览器标签页或通知都会消耗你的大脑。美国心理学会的研究表明,任务切换会使生产力降低多达40%。
所以我自动化了注意力强化。
这个脚本通过修改主机文件在操作系统层面临时阻止分散注意力的域名。
import timefrom datetime import datetimeHOSTS_PATH = r"/etc/hosts" # Windows: r"C:\Windows\System32\drivers\etc\hosts"REDIRECT = "127.0.0.1"BLOCKED_SITES = ["twitter.com", "reddit.com", "youtube.com"]def block_sites(): with open(HOSTS_PATH, "r+") as file: content = file.read() for site in BLOCKED_SITES: if site not in content: file.write(f"{REDIRECT} {site}\n")def unblock_sites(): with open(HOSTS_PATH, "r+") as file: lines = file.readlines() file.seek(0) for line in lines: if not any(site in line for site in BLOCKED_SITES): file.write(line) file.truncate()block_sites()time.sleep(60 * 90) # 90分钟深度工作时段unblock_sites()
我不是尝试集中注意力。我构建一个无法分散注意力的环境。
2. 一个文件变化 “哨兵”,取代手动检查
你是否曾经发现自己反复打开一个文件只是为了查看它是否改变?那是认知泄漏。这个脚本使用文件修改时间戳作为低级哨兵 —— 没有监控程序,没有第三方依赖。
import osimport timeFILE = "critical_config.yaml"last_modified = os.path.getmtime(FILE)while True: current = os.path.getmtime(FILE) if current != last_modified: print("⚠️ 文件已更改。") last_modified = current time.sleep(2)
我在以下情况使用它:配置调整模型训练长时间运行的数据管道一旦有变化,我就知道。没有轮询仪表盘。只有信号。
3. 一个个人 “时间泄漏检测器”(这个让我很受伤)
你无法优化你没有衡量的东西。所以我构建了一个脚本,每隔几秒钟记录一次活动应用程序窗口标题并汇总使用情况。它使用原生操作系统调用 ——不是追踪软件。
import timeimport subprocessfrom collections import Counterdef active_window(): return subprocess.check_output( ["xdotool", "getwindowfocus", "getwindowname"], stderr=subprocess.DEVNULL ).decode().strip()usage = Counter()try: while True: usage[active_window()] += 1 time.sleep(5)except KeyboardInterrupt: for app, count in usage.most_common(10): print(f"{app}: {count * 5}秒")
我第一次运行这个……我意识到 “只是检查一下” 不知不觉中消耗了数小时。那个脚本在一个下午就收回了成本。
4. 一个零依赖备份工具,从不问问题
大多数备份工具要么臃肿要么不可靠。这个工具两者都不是。它创建带时间戳的压缩快照—— 没有图形界面,没有配置文件,没有提示。
import tarfilefrom datetime import datetimedef backup(src, dst): ts = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"{dst}/backup_{ts}.tar.gz" with tarfile.open(filename, "w:gz") as tar: tar.add(src, arcname=".")backup("my_project", "backups")
我在以下情况运行它:风险重构之前依赖升级之前“快速实验” 之前版本控制很棒。备份是保险。
5. 一个将日志转化为决策的脚本
日志在回答问题之前是无用的。这个脚本扫描日志并呈现模式,而非噪音。
from collections import defaultdicterrors = defaultdict(int)with open("app.log") as f: for line in f: if "ERROR" in line: key = line.split(":")[0] errors[key] += 1for err, count in sorted(errors.items(), key=lambda x: x[1], reverse=True): print(err, count)
这告诉我:哪些故障是系统性的哪些是偶然的什么值得首先修复大多数开发者阅读日志。高效的开发者查询日志。
6. 大型代码库的 “死依赖猎手”
在成熟项目中,未使用的导入会像灰尘一样累积。这个脚本静态扫描 Python 文件以找到从未被引用的导入。没有代码检查工具。没有插件。
import astimport osdef find_unused_imports(path): for file in os.listdir(path): if file.endswith(".py"): tree = ast.parse(open(os.path.join(path, file)).read()) imports = {n.name for n in ast.walk(tree) if isinstance(n, ast.Import)} names = {n.id for n in ast.walk(tree) if isinstance(n, ast.Name)} unused = imports - names if unused: print(file, unused)find_unused_imports("src")
每一个未使用的依赖都是:认知负担维护风险未来的困惑清理它们感觉就像整理你的大脑。
7. 我自己知识的本地 “搜索引擎”
我会忘记自己写过的东西。所以我用TF-IDF在本地索引我的笔记。
from sklearn.feature_extraction.text import TfidfVectorizerdocs = open("notes.txt").read().split("\n\n")vectorizer = TfidfVectorizer()tfidf = vectorizer.fit_transform(docs)query = vectorizer.transform(["python multiprocessing"])scores = (tfidf @ query.T).toarray()print(docs[scores.argmax()])
现在我过去的想法是可搜索的。外部搜索引擎帮助你找到答案。这个帮助你找到自己的思路。差别很大。
8. 一个 “提交前大脑”,阻止我偷懒
在任何提交之前,这个脚本运行我知道应该做但经常不做的检查。
import subprocessimport syschecks = [ ["python", "-m", "compileall", "."], ["pytest"],]for cmd in checks: if subprocess.call(cmd) != 0: print("❌ 检查失败:", cmd) sys.exit(1)print("✅ 所有检查通过。")
我将这个连接到 Git 钩子中。现在,偷懒会有后果 ——自动地。