This commit is contained in:
HuangHai
2026-01-15 21:35:17 +08:00
parent b740add57e
commit 28b48d3305
2 changed files with 25 additions and 13 deletions

View File

@@ -1,12 +1,13 @@
import asyncio import asyncio
import json import json
import logging import logging
import os import os
import re import re
import sys import sys
from datetime import datetime import zipfile
from decimal import Decimal from datetime import datetime
from typing import Any, Dict, List, Optional, Set from decimal import Decimal
from typing import Any, Dict, List, Optional, Set
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -512,13 +513,11 @@ async def export_excel(operator: str, output_path: str, *, limit: Optional[int]
async def main(): async def main():
# 配置:默认导出所有数据,如果需要测试少量数据,可以将 None 改为数字,如 10
limit = None limit = None
# 供应商列表
operators = ["新电途", "特来电", "驿来特", "艾特吉易充"] operators = ["新电途", "特来电", "驿来特", "艾特吉易充"]
excel_paths: List[str] = []
# 构建默认输出目录
ts = datetime.now().strftime("%Y%m%d_%H%M%S") ts = datetime.now().strftime("%Y%m%d_%H%M%S")
export_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "Excel", ts) export_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "Excel", ts)
if not os.path.exists(export_dir): if not os.path.exists(export_dir):
@@ -531,15 +530,28 @@ async def main():
output_filename = f"{operator}_{ts}.xlsx" output_filename = f"{operator}_{ts}.xlsx"
output_path = os.path.join(export_dir, output_filename) output_path = os.path.join(export_dir, output_filename)
logger.info(f"--- 正在导出 {operator} ---") logger.info(f"--- 正在导出 {operator} ---")
if limit is not None: if limit is not None:
logger.info(f"限制导出记录数: {limit}") logger.info(f"限制导出记录数: {limit}")
try: try:
final_path = await export_excel(operator, output_path, limit=limit) final_path = await export_excel(operator, output_path, limit=limit)
logger.info(f"{operator} 导出完成: {final_path}") logger.info(f"{operator} 导出完成: {final_path}")
excel_paths.append(final_path)
except Exception as e: except Exception as e:
logger.error(f"{operator} 导出失败: {e}") logger.error(f"{operator} 导出失败: {e}")
if excel_paths:
zip_filename = f"充电场站数据_{ts}.zip"
zip_path = os.path.join(export_dir, zip_filename)
try:
with zipfile.ZipFile(zip_path, "w", compression=zipfile.ZIP_DEFLATED) as zf:
for path in excel_paths:
if os.path.isfile(path):
zf.write(path, arcname=os.path.basename(path))
logger.info(f"ZIP 打包完成: {zip_path}")
except Exception as e:
logger.error(f"ZIP 打包失败: {e}")
logger.info("所有导出任务已结束。") logger.info("所有导出任务已结束。")

Binary file not shown.