page contents

9个Python自动化神器,让我感觉自己像个黑客!

先说个实话。很多人学 Python 自动化,第一步就奔着“全自动”“无人值守”去了,结果脚本写得比手工还费劲。 我一般不这么搞。先找那种一天要点十几次、改几十次、复制粘贴到烦的活。只要这种活还在,Python 就有出手机会。

attachments-2026-04-CTKCTnVB69e191be33c2e.png先说个实话。很多人学 Python 自动化,第一步就奔着“全自动”“无人值守”去了,结果脚本写得比手工还费劲。 我一般不这么搞。先找那种一天要点十几次、改几十次、复制粘贴到烦的活。只要这种活还在,Python 就有出手机会。

1. os + pathlib:批量处理文件,最先救命

这个真不高级,但最常用。改扩展名、清空空目录、找大文件、整理下载目录,十有八九靠它。

from pathlib import Path

root = Path("/data/report")

for f in root.glob("**/*.csv"):
    if "bak" in f.name:
        new_name = f.with_name(f.name.replace("bak", "done"))
        f.rename(new_name)
        print(f"{f.name} -> {new_name.name}")

别小看这几行。手工改 300 个文件名,改到后面眼睛都发直。

2. requests:接口党离不开

很多自动化,本质上就是“替你调接口”。批量查状态、补数据、巡检服务,全是这个路子。

import requests

for order_id in ["A102", "A103", "A104"]:
    r = requests.get(
        "https://api.example.com/order/status",
        params={"orderId": order_id},
        timeout=3
    )
    print(order_id, r.json())

这里我一般先加 timeout,不然接口一挂,脚本也跟着装死。

3. schedule:定时脚本够轻,别上来就整一堆平台

很多人一提定时任务就想调度中心。真没必要。 小活先用 schedule,比如每天 9 点拉报表、清缓存、发提醒。

import schedule
import time

def job():
    print("开始同步昨日数据")

schedule.every().day.at("09:00").do(job)

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

能跑起来,再谈复杂架构。

4. openpyxl:Excel 自动化老黄牛

办公环境里,Excel 就是事实标准。导出、填充、标红异常、合并日报,这种活写脚本比手工靠谱。

from openpyxl import load_workbook

wb = load_workbook("日报.xlsx")
ws = wb["明细"]

for row in range(2, ws.max_row + 1):
    if ws[f"E{row}"].value == "失败":
        ws[f"F{row}"] = "需复查"

wb.save("日报_处理后.xlsx")

这种东西写完一次,后面基本就是复制脚本改列名。

5. pandas:脏数据到你手里,先别嘴硬

CSV、Excel、日志表,一旦数据量上来,手改就是自虐。pandas 不只适合分析,也适合清洗。

import pandas as pd

df = pd.read_csv("user.csv")
df["phone"] = df["phone"].astype(str).str.replace(r"\D", "", regex=True)
df = df[df["phone"].str.len() == 11]
df.to_csv("user_clean.csv", index=False)

我碰到导出字段乱七八糟的时候,通常先丢给 pandas 过一遍,别上来就进数据库硬洗。

6. selenium:有些页面就得“装成人”

不是所有系统都给你接口。遇到登录后才能点、还要翻页、还得下载附件的后台,selenium 还是得上。

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example.com/login")
driver.find_element(By.ID, "username").send_keys("admin")
driver.find_element(By.ID, "password").send_keys("123456")
driver.find_element(By.ID, "submit").click()

这玩意儿慢,也脆。能走接口就别走页面。实在没路才用。

7. paramiko:批量 SSH,运维味一下就出来了

多台机器拉日志、执行命令、收配置,用它很顺手。

import paramiko

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("10.0.0.8", username="root", password="xxxx")

stdin, stdout, stderr = client.exec_command("tail -n 50 /var/log/app.log")
print(stdout.read().decode())
client.close()

这个场景我一般先查日志,再怀疑代码。顺序别反。

8. psutil:盯机器状态,很像在“摸底”

CPU、内存、磁盘、进程,排障脚本里很常见。 有时候不是程序慢,是机器已经快喘不过气了。

import psutil

print("CPU:", psutil.cpu_percent(interval=1))
print("内存:", psutil.virtual_memory().percent)
print("磁盘:", psutil.disk_usage("/").percent)

这种脚本配合定时跑,再发个告警,味道就对了。

9. pyautogui:最后的土办法,但真能救急

有些桌面软件没接口、没命令行、没导出能力,那就只能模拟点击。

import pyautogui
import time

time.sleep(3)
pyautogui.click(100, 200)
pyautogui.write("自动填报完成")
pyautogui.press("enter")

这类方案我不太喜欢,坐标一变就废。但临时救急,真顶用。

写到这其实能看出来,所谓“像黑客”,不是黑窗口里敲几串别人看不懂的命令。是你面对一堆重复动作的时候,脑子里先冒出来的不是“我点一下吧”,而是“这事能不能写 20 行脚本干掉”。

Python 自动化最容易踩的坑也很统一: 一是想一步到位,结果脚本越写越重; 二是迷信库,装了十几个,最后真正常用的也就那几个; 三是不做异常处理,跑一半挂了,第二天还得你自己擦屁股。

真干活的时候,我的习惯很简单:先把输入和输出搞清楚,再把最烦的那一步自动化,最后补日志、补重试、补超时。别一上来就追求“优雅”。能替你省下半小时,就已经是好脚本了。

你下次再看到有人手工复制 200 条数据、点 50 次下载、改一堆文件名,别急着感叹活太碎。 Python 就喜欢这种碎活。

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

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

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

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

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1999 篇文章

作家榜 »

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