From 15f9ceb8416a70a09d9ca1b6ca52115c5b99166f Mon Sep 17 00:00:00 2001 From: Xiaolan Bot Date: Sun, 22 Feb 2026 01:48:44 +0800 Subject: [PATCH] refactor: use tempfile for import/export/stats artifacts --- SubMind.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/SubMind.py b/SubMind.py index f5e38ad..de2ccaa 100644 --- a/SubMind.py +++ b/SubMind.py @@ -4,6 +4,7 @@ import requests import datetime import dateparser import logging +import tempfile import pandas as pd import matplotlib import matplotlib.pyplot as plt @@ -458,7 +459,8 @@ async def stats(update: Update, context: CallbackContext): ax.axis('equal') fig.tight_layout() - image_path = f'stats_{user_id}.png' + with tempfile.NamedTemporaryFile(prefix=f'stats_{user_id}_', suffix='.png', delete=False) as tmp: + image_path = tmp.name plt.savefig(image_path) plt.close(fig) @@ -481,7 +483,9 @@ async def export_command(update: Update, context: CallbackContext): await update.message.reply_text("您还没有任何订阅数据,无法导出。") return - export_path = f'export_{user_id}.csv' + with tempfile.NamedTemporaryFile(prefix=f'export_{user_id}_', suffix='.csv', delete=False) as tmp: + export_path = tmp.name + df.to_csv(export_path, index=False, encoding='utf-8-sig') try: @@ -506,7 +510,8 @@ async def import_upload_received(update: Update, context: CallbackContext): return IMPORT_UPLOAD file = await update.message.document.get_file() - file_path = f'import_{user_id}.csv' + with tempfile.NamedTemporaryFile(prefix=f'import_{user_id}_', suffix='.csv', delete=False) as tmp: + file_path = tmp.name try: await file.download_to_drive(file_path) df = pd.read_csv(file_path, encoding='utf-8-sig')