Python 自动化:10 个让你少加班的实用脚本

从文件批量处理到自动化部署,这些脚本能帮你节省大量时间

Posted on 2024-12-20

作为开发者,我们经常需要处理各种重复性任务。Python 因其简洁的语法和强大的标准库,成为自动化脚本的首选语言。今天分享 10 个我日常使用的实用脚本。

1. 批量重命名文件

import os
import glob

files = glob.glob('*.txt')
for i, filename in enumerate(files, 1):
    os.rename(filename, f'file_{i:03d}.txt')

这个脚本可以批量重命名文件夹中的文件,添加序号前缀。

2. 批量转换图片格式

from PIL import Image
import os

for filename in os.listdir('.'):
    if filename.endswith('.png'):
        img = Image.open(filename)
        img.save(filename.replace('.png', '.jpg'), 'JPEG')

使用 Pillow 库批量将 PNG 转换为 JPG 格式。

3. 自动备份重要文件

import shutil
from datetime import datetime

source = '/path/to/source'
backup_dir = f'/path/to/backup_{datetime.now().strftime("%Y%m%d")}'
shutil.copytree(source, backup_dir)

每天自动创建带日期戳的备份。

4. 批量修改 CSV 文件

import pandas as pd

df = pd.read_csv('data.csv')
df['new_column'] = df['column1'] * 2
df.to_csv('output.csv', index=False)

用 pandas 快速处理和分析 CSV 数据。

5. 自动发送邮件提醒

import smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg['Subject'] = '任务完成提醒'
msg['From'] = 'your@email.com'
msg['To'] = 'recipient@email.com'
msg.set_content('任务已成功完成!')

with smtplib.SMTP('smtp.gmail.com', 587) as server:
    server.starttls()
    server.login('user', 'password')
    server.send_message(msg)

脚本运行完成后自动发送通知邮件。

6. 监控网站状态

import requests
import time

while True:
    try:
        r = requests.get('https://your-site.com', timeout=5)
        if r.status_code != 200:
            print(f'异常!状态码: {r.status_code}')
    except Exception as e:
        print(f'错误: {e}')
    time.sleep(60)

定期检查网站是否正常运行。

7. 自动清理日志文件

import os
import time

days = 7
now = time.time()
for filename in os.listdir('/var/log/app'):
    filepath = os.path.join('/var/log/app', filename)
    if os.path.getmtime(filepath) < now - days * 86400:
        os.remove(filepath)

自动删除超过 7 天的旧日志文件。

8. 批量下载图片

import requests
from bs4 import BeautifulSoup
import urllib.parse

url = 'https://example.com'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')
for img in soup.find_all('img'):
    img_url = urllib.parse.urljoin(url, img['src'])
    data = requests.get(img_url).content
    with open(img['src'].split('/')[-1], 'wb') as f:
        f.write(data)

从网页批量下载所有图片。

9. 自动生成 README 模板

template = '''# {title}

## 描述
{description}

## 安装
```bash
pip install {package}
```

## 使用
```python
import {package}
```
'''

with open('README.md', 'w') as f:
    f.write(template.format(title='My Project', description='...', package='mypackage'))

快速为新项目创建 README 文件。

10. 自动部署到服务器

import subprocess
import os

commands = [
    'git pull',
    'pip install -r requirements.txt',
    'systemctl restart myapp'
]

for cmd in commands:
    subprocess.run(cmd, shell=True, check=True)

一键拉取代码并重启服务。

总结

这些脚本覆盖了文件处理、数据操作、系统管理等常见场景。你可以根据实际需求修改和组合它们。记住,好的自动化脚本应该:

  • 有清晰的注释
  • 处理异常情况
  • 可以配置参数
  • 有日志记录

Happy Coding!