实用脚本能批量迭代吗?

wen 实用脚本 61

本文目录导读:

实用脚本能批量迭代吗?

  1. Python 示例:批量重命名文件
  2. Shell 脚本示例:批量压缩日志文件
  3. JSON 数据批量处理(Python)
  4. 批量 API 请求(带并发加速)
  5. Excel 表格批量处理(Pandas)
  6. 命令行直接批量操作(一行搞定)

当然可以!实用脚本完全可以批量迭代,而且这正是脚本发挥最大价值的地方,通过循环、列表处理、文件遍历等技术,脚本可以快速处理大量重复性任务。

下面给你几个不同场景的批量迭代脚本示例,覆盖文件处理、数据处理、网络请求等常见需求:


Python 示例:批量重命名文件

import os
import glob
# 获取当前目录下所有 .txt 文件
files = glob.glob("*.txt")
for i, filename in enumerate(files):
    # 生成新文件名:file_1.txt, file_2.txt ...
    new_name = f"file_{i+1}.txt"
    os.rename(filename, new_name)
    print(f"已重命名: {filename} -> {new_name}")

批量迭代技巧: for 循环 + glob.glob() 遍历文件列表。


Shell 脚本示例:批量压缩日志文件

#!/bin/bash
# 批量压缩 .log 文件为 .gz
for file in *.log; do
    # 跳过如果没有匹配文件
    [ -e "$file" ] || continue
    gzip "$file"
    echo "压缩完成: $file"
done

批量迭代技巧: for file in *.log 通配符匹配 + 循环体处理。


JSON 数据批量处理(Python)

import json
# 假设有一个包含1000条数据的JSON文件
with open('data.json', 'r') as f:
    records = json.load(f)
# 批量迭代每条记录并处理
processed = []
for record in records:
    # 过滤条件:只保留年龄大于18的
    if record['age'] > 18:
        record['status'] = '成年'
        processed.append(record)
# 保存处理结果
with open('processed_data.json', 'w') as f:
    json.dump(processed, f, indent=2)
print(f"处理完成,共 {len(processed)} 条记录")

批量 API 请求(带并发加速)

import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
# 要查询的ID列表
ids = [101, 102, 103, 104, 105]
def fetch_data(item_id):
    url = f"https://api.example.com/item/{item_id}"
    resp = requests.get(url, timeout=5)
    return resp.json()
# 批量并发请求(比普通循环快3-5倍)
with ThreadPoolExecutor(max_workers=5) as executor:
    futures = {executor.submit(fetch_data, i): i for i in ids}
    for future in as_completed(futures):
        item_id = futures[future]
        try:
            data = future.result()
            print(f"ID {item_id} 获取成功")
        except Exception as e:
            print(f"ID {item_id} 失败: {e}")

Excel 表格批量处理(Pandas)

import pandas as pd
import glob
# 批量读取所有 Excel 文件
files = glob.glob("sales_*.xlsx")
total_revenue = 0
all_data = []
for file in files:
    df = pd.read_excel(file)
    # 批量迭代行处理
    for index, row in df.iterrows():
        revenue = row['price'] * row['quantity']
        total_revenue += revenue
        all_data.append({
            'file': file,
            'product': row['product'],
            'revenue': revenue
        })
print(f"总营收: {total_revenue}")

命令行直接批量操作(一行搞定)

# 批量删除所有 .tmp 文件(慎用)
find . -name "*.tmp" -exec rm {} \;
# 批量将 .md 文件转换为 .html(用 Pandoc)
for f in *.md; do pandoc "$f" -o "${f%.md}.html"; done
# 批量修改图片尺寸(用 ImageMagick)
mogrify -resize 800x600 *.jpg

场景 推荐技术 批量迭代方式
文件处理 for file in * / glob() 遍历文件列表
数据处理 for record in list 遍历内存数据
API请求 ThreadPoolExecutor 并发迭代加速
表格处理 df.iterrows() / apply() 行级批量操作
命令行 find -exec / xargs 管道批量传递

批量迭代的核心原则:

  1. 分解模式:找到重复操作的共性
  2. 循环结构:用 forwhile 或列表推导式
  3. 错误处理:加入 try/except 避免一个失败导致全部中断
  4. 进度显示:大型任务加上 tqdm 包显示进度条
  5. 并行优化:I/O密集型任务用多线程,CPU密集型用多进程

如果你有具体的批量任务场景(比如批量处理1000个PDF、爬取10000个URL等),告诉我细节,我可以给你写一个针对性更强的脚本范例!

抱歉,评论功能暂时关闭!