脚本编写实战训练:从零开始写出能用的自动化工具

为什么你需要动手写脚本

每天上班第一件事就是打开邮箱、下载报表、复制数据、粘贴到Excel,再发给领导。这套流程你重复了多少遍?别说了,我也这么过来的。直到有天我写了三行Shell脚本,这些事现在10秒钟搞定。

脚本不是程序员的专利,它是普通上班族提升效率最直接的武器。关键不在懂多少语法,而在敢不敢动手练。

第一个实战项目:自动整理下载文件夹

你的“下载”文件夹是不是一堆乱七八糟的东西?安装包、PDF、图片混在一起。来,咱们写个Python小脚本,让它自己分类。

import os
import shutil

# 设置下载路径
download_path = "/Users/yourname/Downloads"

types = {
    "images": [".jpg", ".png", ".gif"],
    "ppt": [".pptx", ".pdf"],
    "installers": [".dmg", ".exe"]
}

for filename in os.listdir(download_path):
    file_path = os.path.join(download_path, filename)
    if os.path.isfile(file_path):
        for folder, extensions in types.items():
            if any(filename.lower().endswith(ext) for ext in extensions):
                target_folder = os.path.join(download_path, folder)
                if not os.path.exists(target_folder):
                    os.mkdir(target_folder)
                shutil.move(file_path, os.path.join(target_folder, filename))

把这个保存成 organize.py,双击运行,或者命令行敲 python organize.py。下次再看到乱成一团的下载目录,你就知道该怎么做了。

第二个场景:批量重命名照片

出去玩拍了一堆图,名字全是IMG_1234.jpg这种。想按时间顺序改成“西湖-01”、“西湖-02”,手动改太累。用这个脚本:

import os

folder = "/Users/yourname/Pictures/xihu"
counter = 1

for img in sorted(os.listdir(folder)):
    if img.lower().endswith((".jpg", ".jpeg")):
        new_name = f"西湖-{counter:02d}.jpg"
        os.rename(
            os.path.join(folder, img),
            os.path.join(folder, new_name)
        )
        counter += 1

跑完之后照片整整齐齐,发朋友圈都更有感觉了。

进阶一点:定时抓网页数据

你想盯着某个商品降价,又不想天天刷页面。用下面这个脚本能自动抓价格,存到本地:

import requests
from bs4 import BeautifulSoup
import time

url = "https://example.com/product"
headers = {"User-Agent": "Mozilla/5.0"}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
price = soup.find("span", class_="price").text

with open("price_log.txt", "a") as f:
    f.write(f"{time.strftime('%Y-%m-%d %H:%M')} - {price}\n")

配合系统自带的cron(Mac/Linux)或任务计划程序(Windows),每小时跑一次,价格一降马上通知你。

这些脚本都不复杂,但解决的都是真实问题。别想着一步写出完美代码,先让程序跑起来,再慢慢调。你写的每一个脚本,都在把你从重复劳动里一点点解放出来。