page contents

7个Python库,快速搞定公司内部工具!

我自己做公司内部小工具,挑库有个很土的标准:别整花活,能两三下把脏活干完就行。下面这 7 个 Python 库,我是真觉得顺手,尤其适合做那种“给同事用、给自己省事、上线要求没那么重”的内部工具。气质上也更偏实战,不是拿来写玩具 demo 的。

attachments-2026-04-Cy2wTFzm69e1912a9c534.png工具这东西,平时没人夸,一旦缺了,办公室里全是“谁会写个小脚本”。

导表要改字段,日志要扒关键字,PDF 要拆页,接口要临时压一把,网页上一个表单数据还想顺手抓下来。真到这时候,最烦的不是不会写,是明明半小时能搞完的事,硬生生写成了一下午。

我自己做公司内部小工具,挑库有个很土的标准:别整花活,能两三下把脏活干完就行。下面这 7 个 Python 库,我是真觉得顺手,尤其适合做那种“给同事用、给自己省事、上线要求没那么重”的内部工具。气质上也更偏实战,不是拿来写玩具 demo 的。

  1. Typer:命令行工具先别自己解析参数了

很多内部工具第一版都这样开头:

import sys

env = sys.argv[1]
file_path = sys.argv[2]
print(f"env={env}, file={file_path}")

写两次还行,写到第三次就开始烦。参数缺了、帮助文档没有、类型全靠猜。

换成 typer,命令行工具会顺手很多:

import typer
from pathlib import Path

app = typer.Typer()

@app.command()
def clean_log(file: Path, keyword: str, limit: int = 100):
    count = 0
    with file.open("r", encoding="utf-8"as f:
        for line in f:
            if keyword in line:
                print(line.rstrip())
                count += 1
            if count >= limit:
                break

if __name__ == "__main__":
    app()

这种库的好处不是“高级”,是你第二天再跑这个脚本,不用先翻源码想参数怎么传。

  1. openpyxl:Excel 脏活,绕不过去

公司内部工具,十个里有六个绕不开 Excel。尤其运营、财务、销售给你的数据,基本不可能是标准 CSV。

比如批量清洗用户手机号:

from openpyxl import load_workbook
import re

wb = load_workbook("用户导出.xlsx")
ws = wb.active

for row in range(2, ws.max_row + 1):
    mobile = ws[f"B{row}"].value
    if not mobile:
        continue
    mobile = re.sub(r"\D""", str(mobile))
    if len(mobile) == 11:
        ws[f"B{row}"] = mobile
    else:
        ws[f"C{row}"] = "手机号异常"

wb.save("用户导出_清洗后.xlsx")

这类工具不需要多优雅,关键是能把“人工改一千行”这种事狠狠干掉。

  1. pandas:批量对账、合并报表很省命

openpyxl 适合改格子,pandas 适合算数据。两张表对一下差异、按条件聚合一下、导出一份结果,这个库真是拿来干脏活的。

import pandas as pd

erp = pd.read_excel("erp订单.xlsx")
pay = pd.read_excel("支付订单.xlsx")

merged = erp.merge(pay, on="order_no", how="left", suffixes=("_erp""_pay"))
diff = merged[merged["amount_erp"] != merged["amount_pay"]]

diff.to_excel("差异订单.xlsx", index=False)
print(f"差异条数: {len(diff)}")

我一般不建议什么都上 pandas,但遇到“几万行数据要比对”这种事,还手搓循环,纯属跟自己过不去。

  1. requests:内部接口联调,先把 Postman 放一边

很多内部工具,本质就是调接口。批量重试、批量查询、补数据、巡检状态,requests 足够用。

import requests
import time

session = requests.Session()
session.headers.update({"X-Token""internal-token"})

for user_id in [101102103]:
    resp = session.get(
        "http://intra-api/user/profile",
        params={"user_id": user_id},
        timeout=3
    )
    print(user_id, resp.status_code, resp.json())
    time.sleep(0.2)

这里我比较在意两件事:Session 复用连接,timeout 一定要带。内部工具最怕假死,卡着不报错,比直接失败更恶心。

  1. loguru:日志别再 print 到处飞了

内部工具一开始都喜欢 print(),跑起来一看全糊在终端里。出错时只会看到一句“失败了”。

loguru 很适合这种轻量脚本,接起来快:

from loguru import logger

logger.add("tool.log", rotation="10 MB", retention="7 days")

def sync_user(user_id):
    logger.info("开始同步 user_id={}", user_id)
    try:
        # 这里省略真实业务逻辑
        if user_id == 102:
            raise ValueError("脏数据")
        logger.success("同步完成 user_id={}", user_id)
    except Exception as e:
        logger.exception("同步失败 user_id={} err={}", user_id, e)

for uid in [101102103]:
    sync_user(uid)

尤其给别人用的小工具,日志清楚一点,后面少很多来回问。

  1. schedule:轻定时任务,够用就行

不是所有定时任务都值得上 Airflow、Celery。很多内部工具就是“每隔 10 分钟巡检一次”“每天早上导一份表”。这时候 schedule 很轻。

import schedule
import time
from datetime import datetime

def check_service():
    print(f"[{datetime.now():%H:%M:%S}] 巡检支付服务")
    # 这里可以调接口、查库、发企业微信

schedule.every(10).minutes.do(check_service)

while True:
    schedule.run_pending()
    time.sleep(1)

这种方案我一般只放在单机小工具里。别一激动拿去扛核心生产任务,那就不是省事,是埋雷了。

  1. PyMuPDF:PDF 处理,办公场景特别常见

合同、回单、报告、发票,最后都绕回 PDF。拆页、抽文本、转图片,这类需求在公司里一点不稀奇。

import fitz  # PyMuPDF

doc = fitz.open("日报.pdf")
for i in range(len(doc)):
    new_doc = fitz.open()
    new_doc.insert_pdf(doc, from_page=i, to_page=i)
    new_doc.save(f"日报_第{i+1}页.pdf")
    new_doc.close()

doc.close()

这种库最适合做那种“行政同学每周手工拆 50 份文件”的场景。你写一次,她以后看你都顺眼点。

做公司内部工具,别上来就想平台化、组件化、微服务化。大部分时候,先把那个最烦人的重复动作砍掉,价值就已经出来了。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2026-04-17 09:47
  • 阅读 ( 34 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1999 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 1999 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章