本文目录导读:

- Python 示例:批量重命名文件
- Shell 脚本示例:批量压缩日志文件
- JSON 数据批量处理(Python)
- 批量 API 请求(带并发加速)
- Excel 表格批量处理(Pandas)
- 命令行直接批量操作(一行搞定)
当然可以!实用脚本完全可以批量迭代,而且这正是脚本发挥最大价值的地方,通过循环、列表处理、文件遍历等技术,脚本可以快速处理大量重复性任务。
下面给你几个不同场景的批量迭代脚本示例,覆盖文件处理、数据处理、网络请求等常见需求:
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 |
管道批量传递 |
批量迭代的核心原则:
- 分解模式:找到重复操作的共性
- 循环结构:用
for、while或列表推导式 - 错误处理:加入
try/except避免一个失败导致全部中断 - 进度显示:大型任务加上
tqdm包显示进度条 - 并行优化:I/O密集型任务用多线程,CPU密集型用多进程
如果你有具体的批量任务场景(比如批量处理1000个PDF、爬取10000个URL等),告诉我细节,我可以给你写一个针对性更强的脚本范例!