本文目录导读:

我来为您介绍几种常见的脚本来汇总合并任务结果的方法。
Python脚本汇总合并(推荐)
合并CSV文件
import pandas as pd
import glob
import os
# 合并多个CSV文件
def merge_csv_files(input_pattern, output_file):
# 获取所有匹配的文件
csv_files = glob.glob(input_pattern)
# 读取并合并所有CSV文件
df_list = []
for file in csv_files:
df = pd.read_csv(file)
df_list.append(df)
# 合并所有数据框
merged_df = pd.concat(df_list, ignore_index=True)
# 保存合并后的文件
merged_df.to_csv(output_file, index=False)
print(f"合并完成!共合并 {len(csv_files)} 个文件")
print(f"总行数: {len(merged_df)}")
# 使用示例
merge_csv_files("results/*.csv", "merged_results.csv")
合并JSON文件
import json
import glob
def merge_json_files(input_pattern, output_file):
merged_data = []
# 读取所有JSON文件
for file in glob.glob(input_pattern):
with open(file, 'r') as f:
data = json.load(f)
# 处理单个对象或列表
if isinstance(data, list):
merged_data.extend(data)
else:
merged_data.append(data)
# 保存合并结果
with open(output_file, 'w') as f:
json.dump(merged_data, f, indent=2)
print(f"合并完成!共 {len(merged_data)} 条记录")
# 使用示例
merge_json_files("results/*.json", "merged_results.json")
Shell脚本批量合并
合并文本文件
#!/bin/bash
# 合并所有txt文件
input_dir="results"
output_file="merged_results.txt"
# 清空输出文件
> $output_file
# 添加文件名标识并合并
for file in $input_dir/*.txt; do
echo "=== $file ===" >> $output_file
cat "$file" >> $output_file
echo "" >> $output_file
done
echo "合并完成!共处理 $(ls $input_dir/*.txt | wc -l) 个文件"
合并CSV文件(保留表头)
#!/bin/bash
# 合并CSV文件,保留第一个文件的表头
first_file=true
for file in results/*.csv; do
if [ "$first_file" = true ]; then
cat "$file" > merged_results.csv
first_file=false
else
# 跳过第一行(表头)
tail -n +2 "$file" >> merged_results.csv
fi
done
echo "CSV文件合并完成!"
数据库结果汇总
合并SQL查询结果
import sqlite3
import pandas as pd
def merge_database_results():
# 连接数据库
conn = sqlite3.connect('results.db')
# 查询所有表
tables = pd.read_sql("SELECT name FROM sqlite_master WHERE type='table'", conn)
# 合并所有表
all_data = []
for table in tables['name']:
df = pd.read_sql(f"SELECT * FROM {table}", conn)
all_data.append(df)
# 合并结果
merged_df = pd.concat(all_data, ignore_index=True)
# 保存到Excel
merged_df.to_excel('merged_results.xlsx', index=False)
print(f"合并完成!共 {len(merged_df)} 条记录")
# 使用示例
merge_database_results()
按条件汇总合并
import pandas as pd
import glob
def conditional_merge():
# 读取所有结果文件
all_files = glob.glob("results/task_*.csv")
# 按任务类型分类合并
task_results = {}
for file in all_files:
# 从文件名提取任务类型
task_type = file.split('_')[1] # task_type_1.csv
df = pd.read_csv(file)
if task_type not in task_results:
task_results[task_type] = []
task_results[task_type].append(df)
# 按类型分别合并
for task_type, df_list in task_results.items():
merged = pd.concat(df_list, ignore_index=True)
merged.to_csv(f"merged_{task_type}.csv", index=False)
# 统计信息
print(f"{task_type}: {len(merged)} 条记录")
print(f" 文件数: {len(df_list)}")
# 使用示例
conditional_merge()
高级汇总:带进度条和错误处理
import pandas as pd
import glob
from tqdm import tqdm
import logging
# 设置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def robust_merge(input_pattern, output_file):
"""稳健的文件合并,带进度条和错误处理"""
files = glob.glob(input_pattern)
successful = 0
failed = 0
df_list = []
# 使用进度条
for file in tqdm(files, desc="合并进度"):
try:
df = pd.read_csv(file)
df_list.append(df)
successful += 1
except Exception as e:
logger.error(f"文件 {file} 读取失败: {e}")
failed += 1
if df_list:
# 合并数据
merged_df = pd.concat(df_list, ignore_index=True)
# 数据清洗
merged_df.drop_duplicates(inplace=True)
merged_df.fillna('', inplace=True)
# 保存结果
merged_df.to_csv(output_file, index=False)
# 生成汇总报告
report = {
'总文件数': len(files),
'成功处理': successful,
'失败数量': failed,
'总记录数': len(merged_df),
'输出文件': output_file
}
print("\n=== 合并报告 ===")
for key, value in report.items():
print(f"{key}: {value}")
return merged_df
else:
logger.error("没有成功读取任何文件!")
return None
# 使用示例
result = robust_merge("results/*.csv", "final_merged.csv")
特定场景脚本
合并日志文件
#!/bin/bash
# 按时间排序合并日志
for file in $(ls -tr logs/*.log); do
echo "[$(date -r "$file" '+%Y-%m-%d %H:%M:%S')] $(basename $file)" >> merged_log.txt
cat "$file" >> merged_log.txt
echo "---" >> merged_log.txt
done
合并多线程运行结果
import concurrent.futures
import pandas as pd
def process_batch(files):
"""并行处理多个文件"""
results = []
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
# 提交所有任务
future_to_file = {executor.submit(pd.read_csv, file): file
for file in files}
# 收集结果
for future in concurrent.futures.as_completed(future_to_file):
file = future_to_file[future]
try:
data = future.result()
results.append(data)
except Exception as e:
print(f"处理 {file} 时出错: {e}")
# 合并所有结果
return pd.concat(results, ignore_index=True)
# 使用示例
files = glob.glob("batch_results/*.csv")
merged_data = process_batch(files)
merged_data.to_csv("parallel_merged.csv", index=False)
使用建议
-
选择合适工具:
- 小文件用Shell脚本
- 复杂处理用Python
- 大数据用Spark或数据库
-
注意性能:
- 大文件分批处理
- 使用生成器减少内存占用
- 考虑并行处理
-
数据验证:
- 添加数据完整性检查
- 记录处理日志
- 实现错误恢复机制
根据您的具体需求选择适合的脚本,如果需要处理特定格式或特殊需求,请提供更多细节。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播