多语言工具修改

This commit is contained in:
张宏博 2025-11-07 10:31:34 +08:00
parent ad5cf954e0
commit 5cf090edab
4 changed files with 62 additions and 3 deletions

View File

@ -1,2 +1,3 @@
git pull
python .\tool\cfg\tool_cfg_txt.py
pause

View File

@ -1,4 +1,4 @@
@echo off
REM 设置cs文件的输出目录
set outDir=F:\Github\aplus-b_-pet_-c_nation\Assets\GameMain\Scripts\Hotfix\CS\Proto
protoc.exe --csharp_out=E:\AplusB_NewDocs\msg *.proto
set outDir=E:\WorkSpace\docs\docs\proto
protoc.exe --csharp_out=%outDir% *.proto

View File

@ -1,6 +1,12 @@
{
"target_dir":"tool/txt",
"source_dir":"config",
"post_move": {
"enabled": true,
"mode": "move",
"dest_dir": "E:\\WorkSpace\\Meowment\\Assets\\GameMain\\DataTables",
"files": ["LanguageData.txt"]
},
"file_list": [
{
"in_file":"MergeData.xlsx",

View File

@ -2,6 +2,7 @@ import os
import json
import openpyxl
import csv
import shutil
current_dir = os.getcwd()
print(current_dir)
@ -30,6 +31,7 @@ file_list = cfg['file_list']
target_dir = cfg['target_dir']
source_dir = cfg['source_dir']
fields_to_remove = cfg.get('fields_to_remove', [])
post_move_cfg = cfg.get('post_move', {})
# 确保目标目录存在
os.makedirs(target_dir, exist_ok=True)
@ -61,4 +63,54 @@ for file_cfg in file_list:
row_data = [str(cell) if cell is not None else "" for cell in row if cell not in fields_to_remove]
txt_file.write('\t'.join(row_data) + '\n')
print(f"Converted: {source_file_path} to {target_file_path}")
print(f"Converted: {source_file_path} to {target_file_path}")
# Post-move/copy selected files if configured
if post_move_cfg and post_move_cfg.get('enabled', False):
mode = (post_move_cfg.get('mode') or 'move').lower() # 'move' or 'copy'
files = post_move_cfg.get('files') or []
dest_dir_cfg = post_move_cfg.get('dest_dir') or ''
if not dest_dir_cfg:
print('[post_move] dest_dir 未配置,跳过后续移动/拷贝步骤')
else:
dest_dir_abs = dest_dir_cfg if os.path.isabs(dest_dir_cfg) else os.path.join(current_dir, dest_dir_cfg)
os.makedirs(dest_dir_abs, exist_ok=True)
moved_count = 0
for fname in files:
src_path = os.path.join(current_dir, target_dir, fname)
dst_path = os.path.join(dest_dir_abs, fname)
if not os.path.isfile(src_path):
print(f"[post_move] 源文件不存在,跳过: {src_path}")
continue
# 覆盖目标
if os.path.exists(dst_path):
try:
if os.path.isdir(dst_path):
# 防御:如果是目录,跳过以避免误删
print(f"[post_move] 目标路径是目录,跳过: {dst_path}")
continue
os.remove(dst_path)
except Exception as e:
print(f"[post_move] 覆盖目标文件失败: {dst_path}, 错误: {e}")
continue
try:
if mode == 'copy':
shutil.copy2(src_path, dst_path)
else:
# 默认 move为了兼容不同文件系统使用 copy2 + 删除 源
shutil.copy2(src_path, dst_path)
try:
os.remove(src_path)
except Exception as e:
print(f"[post_move] 删除源文件失败(已完成拷贝): {src_path}, 错误: {e}")
moved_count += 1
print(f"[post_move] {mode} 完成: {src_path} -> {dst_path}")
except Exception as e:
print(f"[post_move] {mode} 失败: {src_path} -> {dst_path}, 错误: {e}")
print(f"[post_move] 共处理 {moved_count}/{len(files)} 个文件,目标目录: {dest_dir_abs}")