Upload files to "/"
This commit is contained in:
67
merge-messages.py
Normal file
67
merge-messages.py
Normal file
@@ -0,0 +1,67 @@
|
||||
import os
|
||||
import json
|
||||
import argparse
|
||||
import sys
|
||||
from typing import Dict, List
|
||||
|
||||
def merge_json_files(src_folder: str, dst_folder: str, output_folder: str):
|
||||
# 创建输出文件夹(如果不存在)
|
||||
os.makedirs(output_folder, exist_ok=True)
|
||||
|
||||
# 遍历源文件夹中的所有文件
|
||||
for filename in os.listdir(src_folder):
|
||||
if filename.endswith('.json'):
|
||||
src_file_path = os.path.join(src_folder, filename)
|
||||
dst_file_path = os.path.join(dst_folder, filename)
|
||||
|
||||
# 检查目标文件夹中是否有对应的文件
|
||||
if os.path.exists(dst_file_path):
|
||||
with open(src_file_path, 'r', encoding='utf-8') as src_file:
|
||||
src_data = json.load(src_file)
|
||||
|
||||
with open(dst_file_path, 'r', encoding='utf-8') as dst_file:
|
||||
dst_data = json.load(dst_file)
|
||||
|
||||
# 检查两个 JSON 数组的长度是否一致
|
||||
if len(src_data) != len(dst_data):
|
||||
print(f"Error: The JSON files {filename} have different lengths.")
|
||||
sys.exit(1)
|
||||
|
||||
# 合并 JSON 数据
|
||||
merged_data = []
|
||||
for index in range(len(src_data)):
|
||||
src_item = src_data[index]
|
||||
dst_item = dst_data[index]
|
||||
|
||||
message_src = src_item.get('message', '')
|
||||
message_dst = dst_item.get('message', '')
|
||||
|
||||
# 创建合并后的项,只保留存在的 name
|
||||
merged_item = {}
|
||||
if 'name' in src_item:
|
||||
merged_item['src_name'] = src_item['name']
|
||||
if 'name' in dst_item:
|
||||
merged_item['dst_name'] = dst_item['name']
|
||||
|
||||
# 将 src 和 dst 消息直接添加到合并项中
|
||||
merged_item['src'] = message_src
|
||||
merged_item['dst'] = message_dst
|
||||
|
||||
merged_data.append(merged_item)
|
||||
|
||||
# 输出合并的 JSON 文件
|
||||
output_file_path = os.path.join(output_folder, filename)
|
||||
with open(output_file_path, 'w', encoding='utf-8') as output_file:
|
||||
json.dump(merged_data, output_file, ensure_ascii=False, indent=2)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Merge JSON files from two folders and output to another folder.')
|
||||
parser.add_argument('src_folder', type=str, help='The source folder containing JSON files.')
|
||||
parser.add_argument('dst_folder', type=str, help='The destination folder containing JSON files to merge with.')
|
||||
parser.add_argument('output_folder', type=str, help='The output folder where merged files will be saved.')
|
||||
|
||||
args = parser.parse_args()
|
||||
merge_json_files(args.src_folder, args.dst_folder, args.output_folder)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user